像这个问题(Django - set up a scheduled job)我想在Django中运行常规任务。
如果可能的话,我也非常想将它捆绑在Django中,而不是需要一个cron作业。理想情况下,我想为客户端处理一个Django应用程序,它们可以在服务器上进行即插即用和移动,而无需每次都编辑crontab。
所以,我想要一些建议。我可以用Django捆绑类似下面的内容,并以某种方式挂钩到Django的启动过程吗? (伪代码)
Function secondsUntilNextRun() {
$a = getTimeValue(“Next Friday at 9am”)
$b = getCurrentTimeValue()
Return $a - $b
}
OnStartup {
$timeToSleep = secondsUntilNextRun()
Start Background Thread
}
Background Thread {
Sleep($timeToSleep)
DoEmailReminders()
$timeToSleep = secondsUntilNextRun()
}
与使用cron + Django管理命令相比,这样做的优点/缺点是什么?
谢谢!
答案 0 :(得分:2)
查看Celery Integration for Django。我将它用于我的项目并且工作得非常好。
如果将任务直接集成到Django代码中,它们将在与Web应用程序相同的上下文中运行。这可能不是你想要的。