배치 작업 스케줄링(Batch Job Scheduling)은 주기적으로 실행되어야 하는 작업을 일정한 시간에 자동으로 실행하는 것을 의미합니다. 이를 통해 시스템이 정기적으로 반복되는 작업을 처리하고, 자동화된 프로세스를 구현할 수 있습니다.
Flask는 파이썬 기반의 경량 웹 프레임워크로, 주로 웹 애플리케이션을 개발하는 데 사용됩니다. 그러나 Flask를 사용하여 배치 작업 스케줄링을 구현하는 것도 가능합니다. Flask는 자체적인 스케줄러를 가지지 않지만, 외부 라이브러리를 사용하여 간단하게 구현할 수 있습니다.
Flask-Crontab 라이브러리
Flask-Crontab은 Flask 애플리케이션에서 Cron 작업 스케줄을 관리하기 위한 라이브러리입니다. Cron은 리눅스 환경에서 사용되는 스케줄링 시스템으로, 특정 작업을 예약된 시간에 실행할 수 있도록 지원합니다.
Flask-Crontab 설치
Flask-Crontab은 pip를 통해 간단하게 설치할 수 있습니다.
pip install Flask-Crontab
Flask-Crontab 설정
Flask-Crontab을 사용하려면 Flask 애플리케이션에 설정을 추가해야 합니다. app.py
와 같은 파일에 다음과 같은 코드를 추가해주세요.
from flask import Flask
from flask_crontab import Crontab
app = Flask(__name__)
crontab = Crontab(app)
app.config['JOBS'] = [
{
'id': 'job1',
'func': 'path.to.execute_job',
'args': (),
'trigger': 'interval',
'hours': 1 # 매 시간마다 실행
},
{
'id': 'job2',
'func': 'path.to.execute_another_job',
'args': (),
'trigger': 'cron',
'minute': 30 # 매 시간 30분마다 실행
},
]
crontab.init_app(app)
위의 코드에서 app.config['JOBS']
는 스케줄링될 작업 목록을 정의합니다. id
는 고유한 작업 식별자이며, func
는 실행될 함수를 나타냅니다. trigger
는 작업이 실행될 주기를 지정하는데, interval
은 특정 시간마다, cron
은 특정 시간에 작업을 실행하도록 설정할 수 있습니다.
작업 실행 함수 정의
위의 코드에서 func
로 지정한 함수는 작업을 실행할 함수입니다. 해당 함수를 정의하고 원하는 작업을 구현해야 합니다. 함수는 Flask 애플리케이션 내의 어떤 모듈에도 위치할 수 있으며, path.to.execute_job
형식으로 함수를 지정하면 됩니다.
# path.to.execute_job 함수 정의 예시
def execute_job():
# 작업 실행 로직을 구현합니다.
pass
# path.to.execute_another_job 함수 정의 예시
def execute_another_job():
# 다른 작업 실행 로직을 구현합니다.
pass
애플리케이션 실행
위에서 작성한 Flask 애플리케이션을 실행하면, 스케줄링된 작업이 주기적으로 실행됩니다. Flask 애플리케이션을 실행하는 방법은 Flask에 익숙하신 분들은 이미 아실 것이라 생각합니다.
if __name__ == '__main__':
app.run()
위의 코드를 app.py
와 같은 파일에 추가하고, 터미널에서 python app.py
를 실행하여 Flask 애플리케이션을 실행할 수 있습니다.
결론
Flask를 이용한 배치 작업 스케줄링은 Flask-Crontab 라이브러리를 활용하여 간단하게 구현할 수 있습니다. Flask-Crontab을 설치하고 설정하여 스케줄링할 작업을 정의하고, 작업을 실행할 함수를 구현하면 됩니다. 이를 통해 일정한 주기로 반복되는 작업을 자동화하고 효율적으로 처리할 수 있습니다.
참고 문서:
Happy coding!