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() 함수를 실행 하면 된다.
이렇게 하면 서버의 동작을 블락 하지 않고 동작하는 스케쥴러가 된다.