크론탭 (정해진 요일, 정해진 시간에 실행)
18 Jul 2022 | backend목적
크론탭은 정해진 스케줄에 파일이 실행되도록 해주는 기능이다.
crontab -e 명령어로 크론탭 실행명령어를 저장한다.
*/10 * * * * docker exec user python /home/ubuntu/app/batch/v3_1/batch_reserve_publish.py > /home/ubuntu/workspace/user/src/log/batch_reserve_publish_log.log 2>&1
#10분마다 계속 실행
0-59 9-23 * * 1-5 docker exec create_engine_v2 python /home/ubuntu/app/process_tool/v3_1/realtime/idea_update_period.py
#9시부터 11시까지 월-금 매분 실행
# target_accuracy
0 8 30 * * 2-6 docker exec user python /home/ubuntu/app/batch/v3_2/batch_price_accuracy.py > /home/ubuntu/app/batch/v3_2/batch_price_accuracy.log 2>&1
#화-토 매일 8시30분에 실행
https://crontab.guru/ 에 들어가면 크론탭 명령어를 가장 쉽게 뽑아낼 수 있다.
crontab -l 로 크론탭 파일상태를 확인할 수 있다.
슬랙봇을 붙여넣으면 파일이 돌아가고 있는 현황을 업데이트받을 수 있어서 편리하다.
예시:
import pymysql
from datetime import datetime
from config.config_db import DataBaseConfig as con_DB
from configuration import server_name, send_slack
def delete_temp(conn, now):
cursor = conn.cursor(pymysql.cursors.DictCursor)
sql = f"""
update db_community.tb_board_draft
set del_yn = 1, del_dt = '{now}'
where reg_dt < DATE_ADD('{now}', INTERVAL -60 DAY)
"""
affected_rows = cursor.execute(sql)
assert affected_rows != -1, '쿼리 실행에 실패하였습니다'
if affected_rows != 0:
send_slack(f' 60일 지난 임시저장 게시글 {affected_rows}개가 삭제되었습니다 \n',
f' tangopick_{server_name}_temp')
else:
send_slack(f' 삭제한 임시저장 글이 없습니다 \n',
f' tangopick_{server_name}_temp')
if __name__ == '__main__':
conn = pymysql.connect(**con_DB.tangopick_db_config(read=False)[0])
now = datetime.now()
now_str = now.strftime('%Y-%m-%d %H:%M:00')
now = datetime.strptime(now_str, '%Y-%m-%d %H:%M:00')
delete_temp(conn, now)
conn.commit()
conn.close()