1) apscheduler 설치
pip install apscheduler
2) setting.py에 백엔드 설정
# settings.py
INSTALLED_APP = [
...
'django_apscheduler',
'MyAppConfig',
...
]
# default
APSCHEDULER_DATETIME_FORMAT = "N j, Y, f:s a"
# 자동으로 스케쥴러 실행
SCHEDULER_DEFAULT = True
3) 작업함수 생성
# <APP이름>/tasks.py
from apscheduler.schedulers.background import BackgroundScheduler
scheduler = BackgroundScheduler()
def my_scheduled_task():
# 여기에 작업 내용을 작성합니다.
print("Scheduled task executed!")
# 작업을 스케줄러에 추가
scheduler.add_job(my_scheduled_task, 'interval', minutes=30)
4) app 등록
myapp/apps.py
from django.apps import AppConfig
from .tasks import scheduler
class MyAppConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'myapp'
def ready(self):
scheduler.start()
5) 앱 실행
python manage.py runserver
참고 - https://ediblepotato.tistory.com/3
(스케쥴러 실행 함수를 분리하여 코드하는 법에 대해 잘 설명 되어 있음👍)
1) apscheduler 설치
pip install apscheduler
2) setting.py에 백엔드 설정
# settings.py
INSTALLED_APP = [
...
'django_apscheduler',
'MyAppConfig',
...
]
# default
APSCHEDULER_DATETIME_FORMAT = "N j, Y, f:s a"
# 자동으로 스케쥴러 실행
SCHEDULER_DEFAULT = True
3) ⭐작업함수 및 py파일 생성
# <APP이름>/tasks.py
from apscheduler.schedulers.background import BackgroundScheduler
scheduler = BackgroundScheduler()
def my_scheduled_task():
# 여기에 작업 내용을 작성합니다.
print("Scheduled task executed!")
# 작업을 스케줄러에 추가
scheduler.add_job(my_scheduled_task, 'interval', minutes=30)
# <APP이름>/operator.py
import time
from apscheduler.schedulers.background import BackgroundScheduler
def schedule_process():
scheduler = BackgroundScheduler()
scheduler.add_job(tasks, 'cron', hour=12, minute=00)
scheduler.start()
4) ⭐ app 등록
myapp/apps.py
from django.apps import AppConfig
from .tasks import scheduler
class MyAppConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'myapp'
def ready(self):
if settings.SCHEDULER_DEFAULT:
from . import operator
operator.schedule_process()
5) 앱 실행
python manage.py runserver