Django Crontab
crontab은 서버 내의 특정 작업(또는 명령)을 특정 주기로 스스로 실행하도록 하는 것을 뜻한다.
django-crontab 설치
poetry add django-crontab
django-crontab setting
설치 후에는 settings.py 의 INSTALLED_APPS에 해당 모듈을 추가해준다.
INSTALLED_APPS = (
'django_crontab',
. . .
)
cronjob 추가
자신의 앱 안에 cron.py파일을 만든 후, 스케줄 작업을 등록하기 위한 함수를 만들어준다. (함수의 위치는 상관 없음)
myapp/cron.py :
def crontab_job():
. . .
settings.py에 crontab 작업 등록
CRONJOBS = [
('*/5 * * * *', 'app.cron.crontab_job')
]
첫번째 인자로 분(0-59) 시(0-23) 일(1-31) 월(1-12) 요일(0-6)(0:일요일, 1:월요일, 2:화요일, …, 6:토요일) 순으로 각 작업이 실행될 때를 입력한 후, 두번째 인자로는 app이름.file이름.function이름을 입력해준다.
CRONJOBS = [
('59 23 * * 0', 'planets.cron.delete_planet'),
('0 0 * * 1', 'planets.cron.create_planet'),
]
crontab 명령어
이렇게 크론탭 작업을 추가하고 설정까지 마쳤다면 서버에서 crontab 작업들을 처리해줘야한다. add를 수행하면 settings.py에 명시해준 작업들을 시작한다.
$ python manage.py crontab add # 등록된 job들을 모두 실행
$ python manage.py crontab remove # 등록된 job들을 모두 제거
$ python manage.py crontab show # 등록된 job들을 모두 보기
cron-tab으로 is_active=False인 유저들을 삭제해봐야겠다!