Job Scheduler - pai-plznw4me/django-initializer GitHub Wiki
Django job scheduler
- ์ผ์ ์ฃผ๊ธฐ๋ก ์ ํด์ง python ํจ์๋ฅผ ์๋ ์ํค๋ ์์
์
job
์ด๋ผ๊ณ ํ๋ค.
์ฃผ๊ธฐ
์ฃผ๊ธฐ๋ ํฌ๊ฒ 2๊ฐ์ง๋ก ๋๋์ด ์ง๋ค.
- ์ผ์ ์ฃผ๊ธฐ๋ก ์ ์คํํ๋ ๊ฒ
- ์ผ์ ์๊ฐ์ ์คํ ํ๋ ๊ฒ.
์ผ์ ์ฃผ๊ธฐ ์์ฑํ๊ธฐ
1. django application ๋ฑ๋ก
AppConfig.ready ํจ์๋ฅผ ์ค๋ฒ๋ผ์ด๋ ํด ์ค์ผ์ฅด๋ง ์์ ์ ์ถ๊ฐํ๋ค.
- 1.1 app์ด ์์ํ๋ฉด ready ํจ์๊ฐ ์๋ํ๋ค.
- 1.2 ready ํจ์๋ด start ํจ์๊ฐ ์์๋๋ค.
- 1.3 BackgroundScheduler ์์ฑ
- 1.4 job ์ถ๊ฐ
- 1.5 scheduler ์์
# migrations/apps.py
from django.apps import AppConfig
from apscheduler.schedulers.background import BackgroundScheduler
from datetime import datetime
class MainAppConfig(AppConfig):
name = 'interval'
def ready(self):
print("this is Django-apps.py ready function()")
self.start()
def start(self):
def schedule_api():
timeZone = datetime.now()
print(" Every 10 seconds this executed")
print(" Now : %s" % timeZone.second)
print("This is SCHEDULER APPS PROCESSING")
print("jobs.updater.jobs")
# 1. ์ค์ผ์ฅด๋ฌ๋ฅผ ์ถ๊ฐํฉ๋๋ค.
scheduler = BackgroundScheduler()
# 2. ์ค์ผ์ฅด๋ฌ๊ฐ ์ํํ ์ก(job) ์ ์ถ๊ฐํฉ๋๋ค.
scheduler.add_job(schedule_api, 'cron', second=10)
# scheduler.add_job(schedule_api, 'interval', seconds=10) <-- interval ์คํ์ ์๋ ์ฝ๋ ์ํ
# 3. ์ค์ผ์ฅด๋ฌ๋ฅผ ์คํํฉ๋๋ค.
scheduler.start()
์ฃผ์ ํ ์
- job scheduler ๋ ํ ํ๋ก์ธ์ค์์๋ง ์๋ ํ๋๋ก ํด์ผ ํ๋ค.
- django ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ๋ฌ ํ๋ก์ธ์ค๋ฅผ ๋์ด์ ์ํํ๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ํ๋์ ํ๋ก์ธ์ค๋ง ๋์ด์ ์๋ํ๋๋ก ์ค์ ํด์ผ ํ๋ค.
๊ฐ๋ฅํ๋ฉด job scheduler ์๋ฒ๋ ๊ธฐ์กด ์๋ฒ์ ๋ถ๋ฆฌํด ๊ตฌ์ฑํ๋๋ก ํ๋๊ฒ ์ข๋ค.