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

Django: set up a scheduled job within Django?

像这个问题(django-设置一个计划的作业)我想在django内运行一个常规任务。

如果可能的话,我也很想把它捆绑在Django中,而不是需要一个cron工作。理想情况下,我想为客户机处理一个Django应用程序,它们可以在服务器之间插入、播放和移动,而无需每次编辑crontab。

所以,我想要一些建议。我可以把下面这些东西和Django捆绑在一起,然后以某种方式连接到Django的启动过程中吗?(伪代码)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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管理命令相比,这样做的优点/缺点是什么?

谢谢!


看看姜戈芹菜的融合。我在我的项目中使用它,它工作得很好。

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