질문
I've been working on a web app using Django, and I'm curious if there is a way to schedule a job to run periodically.
기본적으로 데이터베이스를 검색하고 일정한 주기로 일부 계산/업데이트를 수행하려고 합니다. 그러나 이를 수행하는 데 대한 문서를 찾을 수 없습니다.
이를 설정하는 방법을 아시는 분은 계신가요?
명확히 말하자면: cron
작업을 설정할 수 있다는 것은 알고 있지만, Django에서 이 기능을 제공하는 기능이 있는지 궁금합니다. 사용자가 많은 구성을 하지 않고도이 앱을 배포 할 수 있도록하려고합니다 (가능하면 0).
마지막으로 사이트로 요청을 보낸 후에 작업이 실행되어야하는지 확인하기 위해 이러한 작업을 "역으로" 트리거하는 것도 고려해 보았지만, 좀 더 깔끔한 방법을 희망합니다.
답변
내가 사용한 한 가지 해결책은 다음과 같다:
1) 사용자 정의 관리 명령을 생성한다. 예를 들면
python manage.py my_cool_command
2) 필요한 시간에 명령을 실행하기 위해 cron
(Linux)이나 at
(Windows)을 사용한다.
이것은 무거운 AMQP 스택을 설치할 필요가 없는 간단한 해결책이다. 그러나 다른 답변에서 언급된 Celery와 같은 것을 사용하는 것이 좋은 장점이 있다. 특히 Celery를 사용하면 응용 프로그램 로직을 crontab 파일로 분산시킬 필요가 없어서 좋다. 그러나 cron 솔루션은 작은에서 중간 규모의 응용 프로그램과 외부 종속성을 많이 원하지 않는 경우에는 꽤 잘 작동한다.
편집:
나중 버전의 Windows에서는 Windows 8, Server 2012 이상에서 at
명령이 사용되지 않으며, 동일한 용도로 schtasks.exe
를 사용할 수 있다.
**** 업데이트 **** 사용자 정의 관리 명령 작성에 대한 django 문서의 새 링크입니다.
댓글