[python] 웹 서버에 스케줄링 기능 추가하기

이번 포스트에서는 Python을 사용하여 웹 서버에 스케줄링 기능을 추가하는 방법을 알아보겠습니다.

스케줄링을 위한 라이브러리 선택

Python에서는 다양한 스케줄링 라이브러리를 제공합니다. 여기서는 가장 일반적으로 사용되는 APScheduler를 선택하겠습니다. APScheduler는 백그라운드에서 지정된 작업을 주기적으로 실행할 수있는 기능을 제공합니다.

APScheduler 설치

먼저, APScheduler 라이브러리를 설치해야 합니다. 다음 명령을 사용하여 설치할 수 있습니다.

pip install apscheduler

스케줄링 작업 생성

스케줄링 작업을 생성하려면 먼저 작업을 수행할 함수를 만들어야 합니다. 예를 들어, 매 분마다 특정 작업을 실행하고 싶다면 다음과 같이 함수를 정의할 수 있습니다.

def job():
    print("스케줄링 작업 실행")

스케줄러 설정 및 실행

스케줄러를 설정하고 실행하기 위해 APSchedulerBackgroundScheduler 클래스를 사용합니다. 다음은 매 분마다 job() 함수를 실행하는 예제입니다.

from apscheduler.schedulers.background import BackgroundScheduler

scheduler = BackgroundScheduler()
scheduler.add_job(job, 'interval', minutes=1)

scheduler.start()

이렇게 하면 스케줄러가 백그라운드에서 주기적으로 작업을 실행하게 됩니다.

웹 서버와의 통합

이제 스케줄링 작업을 웹 서버에 통합하는 방법을 알아보겠습니다. 일반적으로 Flask, Django와 같은 웹 프레임워크를 사용할 수 있습니다.

예를 들어, Flask를 사용하는 경우 다음과 같이 API 엔드포인트를 만들고 스케줄링 작업을 실행할 수 있습니다.

from flask import Flask
from apscheduler.schedulers.background import BackgroundScheduler

app = Flask(__name__)

def job():
    print("스케줄링 작업 실행")

scheduler = BackgroundScheduler()
scheduler.add_job(job, 'interval', minutes=1)

scheduler.start()

@app.route('/start_job')
def start_job():
    scheduler.add_job(job, 'interval', minutes=1)
    return "스케줄링 작업 시작"

@app.route('/stop_job')
def stop_job():
    scheduler.remove_all_jobs()
    return "스케줄링 작업 중지"

if __name__ == '__main__':
    app.run()

이렇게 하면 /start_job 엔드포인트를 호출하여 스케줄링 작업을 시작하고, /stop_job 엔드포인트를 호출하여 작업을 중지할 수 있습니다.

결론

Python을 사용하여 웹 서버에 스케줄링 기능을 추가하는 방법을 살펴보았습니다. APScheduler를 사용하여 주기적으로 작업을 실행할 수 있습니다. 그리고 웹 서버와의 통합을 위해 Flask와 같은 웹 프레임워크를 사용할 수 있습니다. 스케줄링은 백그라운드에서 작업을 실행하므로 웹 서버의 성능과 안정성을 향상시킬 수 있습니다.

참고 문서: