[FastAPI] 백그라운드 스케쥴러

_____·2022년 7월 2일
0

FastAPI

목록 보기
7/10

from DB.database import get_db
from DB.image_database import Image
import sched
from apscheduler.schedulers.background import BackgroundScheduler
 
sched = BackgroundScheduler(timezone='Asia/Seoul')

#매일 새벽 1시 30분에 스케줄러가 작동, INACTIVE 상태의 이미지를 삭제한다
@sched.scheduled_job('cron', hour='1', minute='30', id='remove_inactive_image')
def job():
    db = next(get_db())
    inactive_image_list = db.query(Image).filter(Image.state == "INACTIVE").all()
    for image in inactive_image_list:
        db.delete(image)

def start_image_scheduler():
    sched.start()
       

①: BackgroundScheduler 객체를 생성한다. (이하 객체)
②: 반복 실행 하고 싶은 함수를 @객체 이름.scheduled_job(...) 데코레이터로 장식 한다.
③: 객체의 start() 함수를 실행 하면 된다.

이렇게 하면 서버의 동작을 블락 하지 않고 동작하는 스케쥴러가 된다.

profile
개발자입니다.

0개의 댓글