[파이썬] Flask에서의 배경 작업 실행

Flask는 파이썬 웹 프레임워크로 알려져 있으며, 웹 애플리케이션을 만들기 위해 사용됩니다. 하지만 때로는 웹 요청에 응답하는 동안 배경 작업(background tasks)을 실행해야 할 때가 있습니다. 예를 들어, 사용자가 긴 처리 시간이 소요되는 작업을 요청했을 때, 이 작업을 웹 요청이 차단되지 않도록 배경 작업으로 실행하는 것이 좋습니다.

Flask에서 배경 작업을 실행하기 위해 다양한 방법이 있지만, 여기에서는 Flask BackgroundScheduler를 사용하여 작업을 예약하고 실행하는 방법을 알아보겠습니다.

Flask BackgroundScheduler 설정

Flask BackgroundScheduler는 백그라운드에서 실행될 함수를 예약하고 관리하는 기능을 제공합니다. 아래와 같은 단계를 따라 Flask BackgroundScheduler를 설정할 수 있습니다.

  1. 먼저, Flask BackgroundScheduler 패키지를 설치해야 합니다. pip install flask-background-scheduler 명령을 사용하여 패키지를 설치합니다.

  2. Flask 어플리케이션의 코드 파일에 아래 코드를 추가합니다.

from flask import Flask
from flask_apscheduler import APScheduler

app = Flask(__name__)
scheduler = APScheduler()
scheduler.init_app(app)
scheduler.start()

배경 작업 함수 만들기

배경 작업으로 실행할 함수를 작성해보겠습니다. 예를 들어, 사용자 정보를 주기적으로 업데이트하기 위해 백그라운드 작업을 실행해야 하는 경우를 가정해보겠습니다.

def update_user_info():
    # 사용자 정보 업데이트 로직 수행
    pass

작업 예약하기

이제 작성한 배경 작업 함수를 예약해보겠습니다. Flask BackgroundScheduler는 크게 인터벌 스케쥴러(Interval Scheduler)크론 스케쥴러(Cron Scheduler)를 지원합니다.

인터벌 스케쥴러

인터벌 스케쥴러는 일정한 시간 간격으로 작업을 실행합니다. 아래와 같은 코드를 작성하여 배경 작업을 1분마다 실행하도록 예약할 수 있습니다.

@scheduler.task('interval', id='update_user', seconds=60)
def schedule_update_user():
    update_user_info()

크론 스케쥴러

크론 스케쥴러는 특정한 시간에 작업을 실행합니다. 아래와 같은 코드를 작성하여 배경 작업을 매일 오전 6시에 실행하도록 예약할 수 있습니다.

@scheduler.task('cron', id='update_user', hour=6)
def schedule_update_user():
    update_user_info()

배경 작업 실행

Flask BackgroundScheduler를 설정하고 작업을 예약했다면, 이제 Flask 애플리케이션이 실행될 때 배경 작업도 함께 실행됩니다. Flask 애플리케이션이 실행되는 동안에는 배경 작업이 계속해서 실행되며, 예약된 시간에 따라 작업이 수행됩니다.

결론

Flask에서 배경 작업을 실행하는 것은 매우 유용한 기능입니다. Flask BackgroundScheduler를 사용하여 작업을 예약하고 실행하는 방법을 알아보았습니다. 이를 통해 웹 요청에 응답하는 동안 긴 처리 시간이 소요되는 작업을 배경에서 실행할 수 있습니다. Flask BackgroundScheduler를 사용하여 웹 애플리케이션의 성능과 사용자 경험을 향상시킬 수 있습니다.