본문 바로가기

Web Programming/Django

django crontab 장고 크론탭

웹 이든 어떠한 형태의 서버에서 주기적으로 배치 또는 실행이 필요한 작업들이 존재한다.

예를 들어, 서버에서 주기적으로 매주 월요일에 필요 없는 임시 파일들이라든지 여러 가지 파일들을 지워줄 때나 어느 정도의 시간이 지나 만료된 세션들을 종료한다든지 얼마든지 다양한 형태의 작업들이 필요로 되어진다.

 

이럴 때 필요한 것이 바로 크론탭이다. 크론탭은 서버 내의 특정 작업(또는 명령)을 특정 주기로 스스로 실행하도록 하는 것을 뜻한다.

 

당연히 Django에도 이러한 Crontab을 지원하는 모듈이 존재한다.

바로 django-crontab이다.

단, django-crontab은 리눅스 기반이기에 윈도우 환경에서는 동작되지 않는다!

 

먼저, 서버에서 모듈을 설치하여준다.

pip install django-crontab

그리고 settings.py에 해당 앱을 추가해준다.

...
INSTALLED_APPS = (
    ...,
    'django_crontab',
)
...

Project/App/cron.py 파일 생성 후 실행시킬 Job들을 기록해준다.

(실제로 어떠한 경로든 특정 경로를 정확히 명명할 수 있다면 굳이 cron.py 파일이 아니라도 상관은 없지만 일반적으로 다음과 같이 작성을 한다)

def crontab_job():
    run()
    pass

 

Settings.py에 crontab 작업 등록하기

...
CRONJOBS = [
    ('*/5 * * * *', 'app.cron.crontab_job')
]
...
'분 시 일 월 요일', 'App.file.function'
  • 분(0 - 59) 시(0 - 23) 일(1 - 31) 월(1 - 12) 요일(0 - 6) (0:일요일, 1:월요일, 2:화요일, …, 6:토요일)
  • ex ('*/5****', 'app.cron.crontab_job') -> 매 5분마다 app/cron.py에 있는 crontab_job() 실행

서버에서 Crontab 작업들 처리하기

python manage.py crontab add 		# 등록된 job들을 모두 실행
python manage.py crontab remove 	# 등록된 job들을 모두 제거
python manage.py crontab show		# 등록된 job들을 모두 보기

 

'Web Programming > Django' 카테고리의 다른 글

Django 유저 Accounts 비밀번호 재설정  (0) 2020.03.24
Ajax 통신하기  (0) 2020.02.29
Static 추가하기  (0) 2020.02.16
Django 회원가입 이메일 인증(SMTP)  (2) 2020.02.09
Like 좋아요 모델 추가하기  (1) 2019.06.25