Django crontab 라이브러리 사용법
django-crontab 라이브러리는 OS의 cron/crontab 서비스를 사용하는것으로 해당 서비스 설치가 되지 않았다면 별도로 설치를 해야함.
- windows 환경에서는 docker를 설치하여 진행
1. 라이브러리 설치
$ pip install django-crontab
2. django 설정
- 임의의 app 디렉터리내 cron.py 생성 아래의 함수를 작성한다. - 반복 실행할 임의의 함수 선언def hello_every_minute(): print("hello world")
 
- 반복 실행할 임의의 함수 선언
- settings.py - django_crontab앱 추가- INSTALLED_APPS = [ 'django_crontab', ... ]
- CRONJOBS변수 선언- 첫번째 매개변수 : 실행주기 설정으로 기존 cron 사용법(분,시,일,월,요일)과 동일하다.- * * * * *: 매분마다 실행
- */10 * * * *: 10분마다 실행
- 0 * * * *: 매시간마다 실행
- 0 0 * * *: 자정마다 실행
 
- 두번째 매개변수 : 반복 실행할 함수
- 세번째 매개변수 : cron 실행로그 저장 경로 (선택사항)
 - ... CRONJOBS = [ ('* * * * *', 'app.cron.hello_every_minute', '>> /app/log/cron.log'), ]
- 첫번째 매개변수 : 실행주기 설정으로 기존 cron 사용법(분,시,일,월,요일)과 동일하다.
- crontab 프로젝트의 settings 파일 경로 지정... CRONTAB_DJANGO_SETTINGS_MODULE = 'project.settings'
 
3. crontab 명령어
- cron 작업스케줄 추가 - $ python manage.py crontab add- Starting periodic command scheduler: cron. adding cronjob: (2d7f1e3059afc75b51927955cb7ccb92) -> (’* * * * *’, ‘app.cron.hello_every_minute’, ‘» /app/log/cron.log’) 
- cron 작업스케줄 조회 - $ python manage.py crontab show- Currently active jobs in crontab: 
 2d7f1e3059afc75b51927955cb7ccb92 -> (’* * * * *’, ‘app.cron.hello_every_minute’, ‘» /app/log/cron.log’)
- cron 작업스케줄 삭제 - $ python manage.py crontab remove- removing cronjob: (2d7f1e3059afc75b51927955cb7ccb92) -> (’* * * * *’, ‘app.cron.hello_every_minute’, ‘» /app/log/cron.log’) 
4. 실행 결과
- crontab 실행 후 해당 경로의 log 파일 확인 - $ cat cron.log- hello 
5. Docker-compose 사용시 설정
- dockerfile 설정 - ... RUN apt-get update && apt-get -y install --no-install-recommends cron ...
- docker-compose 설정 - services: django: ... command: bash -c " service cron start && python3 manage.py crontab add"
6. Docker-compose 실행
- 이미지 빌드 및 컨테이너 백그라운드 실행 - $ docker-compose -f docker-compose.yml up -d --build
