Django:在Django中设置一个预定的工作?

时间:2011-03-08 10:41:36

标签: django

像这个问题(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管理命令相比,这样做的优点/缺点是什么?

谢谢!

1 个答案:

答案 0 :(得分:2)

查看Celery Integration for Django。我将它用于我的项目并且工作得非常好。

如果将任务直接集成到Django代码中,它们将在与Web应用程序相同的上下文中运行。这可能不是你想要的。