πŸ—’οΈcrontab을 μ΄μš©ν•΄μ„œ 배치 돌리기

λ¬Έν•΄ν”ΌΒ·2023λ…„ 5μ›” 22일
0

airflow

λͺ©λ‘ 보기
1/5

crontab??

νŠΉμ • μ‹œκ°„μ— μž‘μ—…μ„ μ˜ˆμ•½ν•˜λŠ”κ²ƒ, 즉 Linux 및 Unix μ‹œμŠ€ν…œμ—μ„œ μž‘μ—…μ„ μžλ™ν™”ν•˜λŠ”λ° μ‚¬μš©λ˜λŠ” μœ ν‹Έλ¦¬ν‹°μž…λ‹ˆλ‹€. crontab은 cron 데λͺ¬μ— μ˜ν•΄ λ‘œλ“œλ˜κ³  μž‘μ—…μ„ μ‹€ν–‰ν•©λ‹ˆλ‹€.

πŸ’‘ ν•„λ“œμ˜ ν˜•μ‹

  1. λΆ„
  2. μ‹œκ°„
  3. λ‚ μ§œ
  4. μ›”
  5. μš”μΌ

각 ν•„λ“œλŠ” 0μ—μ„œ 59μ‚¬μ΄μ˜ 숫자 λ˜λŠ” λ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λŠ” λͺ¨λ“  값을 μ˜λ―Έν•©λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄ * * * * *λŠ” λ§€λΆ„λ§ˆλ‹€ μž‘μ—…μ„ μ‹€ν–‰ν•©λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄ 맀일 μ˜€μ „ 10μ‹œλ§ˆλ‹€ ls μž‘μ—…μ„ μˆ˜ν–‰ν•˜κ³  μ‹Άλ‹€λ©΄

crontab -e λ₯Ό 톡해 λ“€μ–΄κ°„λ’€

0 10 * * * ls

λ₯Ό μž‘μ„±ν•œλ’€ :wqλ₯Ό ν•˜λ©΄ μ™„μ„±μž…λ‹ˆλ‹€

crontab으둜 맀일 16μ‹œ40λΆ„μ˜ 주식 10개λ₯Ό μ•Œμ•„λ³΄κΈ°

κ·Έλ ‡λ‹€λ©΄ λ¨Όμ € μΌμ •μ‹œκ°„μ— μ‹€ν–‰ν•˜κΈ°μœ„ν•œ 크둀링 νŒŒμ΄μ¬μ½”λ“œλ₯Ό μ™„μ„±ν•˜κ² μŠ΅λ‹ˆλ‹€.

파이썬 μ½”λ“œλŠ” krxμ—μ„œ μ’…λͺ©μ˜ μ½”λ“œλ₯Ό κ°€μ Έμ˜¨λ’€

넀이버 증ꢌ apiλ₯Ό ν†΅ν•΄μ„œ 값을 κ°€μ Έμ˜€λŠ” 방식을 ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

  • stock.py
from datetime import date, datetime 
import requests
import pandas as pd

krx_url = "http://data.krx.co.kr/comm/bldAttendant/getJsonData.cmd"
krx_payload = {"bld": "dbms/MDC/STAT/standard/MDCSTAT01901",
"locale": "ko_KR",
"mktId": "ALL",
"share": "1",
"csvxls_isNo": "false",}

today = str(date.today()).replace("-","") 
r= requests.post(krx_url, data=krx_payload)

total = []
for x in r.json()['OutBlock_1'][:10]:
    symbol = x['ISU_SRT_CD']
    url = f"https://api.finance.naver.com/siseJson.naver?symbol={symbol}&requestType=1&startTime={today}&endTime={today}&timeframe=day"
    df =pd.DataFrame(data=eval(requests.post(url).text.strip())[1:], columns=eval(requests.post(url).text.strip())[0])
    df['symbol'] = symbol
    total.append(df)
    
pd.concat(total, ignore_index=True).to_csv(f"./{today}.csv", index=False)

batch.sh 파일 μž‘μ„±ν•˜κΈ°

πŸ’‘batch.sh파일의 ν˜•μ‹

{python3의 경둜} {stock.py의 경둜}

πŸ’‘python3의 경둜

which python3λ₯Ό ν†΅ν•΄μ„œ λ‚˜μ˜¨ 경둜λ₯Ό 볡사해 λ‘‘λ‹ˆλ‹€.

이제 crontab -e λ₯Ό ν†΅ν•΄μ„œ μ‹€ν–‰μ‹œν‚¬ batch.shκ°€ ν•„μš”ν•©λ‹ˆλ‹€.

vim batch.sh λ₯Ό ν†΅ν•΄μ„œ μœ„μ˜ ν˜•μ‹μ²˜λŸΌ νŒŒμΌμ„ μž‘μ„±ν•©λ‹ˆλ‹€.

그리고 λ‚˜μ„œλŠ” batch.sh의 κΆŒν•œμ„ μ£Όμ–΄μ•Ό ν•©λ‹ˆλ‹€.

πŸ’‘batch.sh κΆŒν•œ μ£ΌκΈ°

chmod 777 batch.sh


crontab μž‘μ„±ν•˜κΈ°

crontab -e λ₯Ό ν†΅ν•΄μ„œ λ“€μ–΄κ°€ μ€λ‹ˆλ‹€.

그리고 이제 μ›”μš”μΌλ§ˆλ‹€ 16μ‹œ 55λΆ„μ˜ 주식을 csv파일둜 μ €μž₯할것이기 λ•Œλ¬Έμ— 쑰건에 λ§žμΆ°μ„œ μž‘μ„±ν•΄μ€λ‹ˆλ‹€.

μ΄λ ‡κ²Œ κΉŒμ§€ν•˜λ©΄ λμž…λ‹ˆλ‹€.

πŸ’‘crontab 리슀트 ν™•μΈν•˜κΈ°

crontab -l

profile
ν–‰λ³΅ν•˜λ €κ³  κ°œλ°œκ³΅λΆ€ν•˜λŠ” λ¬Έκ΄‘μ‹μ˜ λ‘œκ·ΈνŒŒμΌμž…λ‹ˆλ‹€.

0개의 λŒ“κΈ€