我一直在使用Django开发网络应用,而我很好奇是否有一种方法可以安排作业定期运行。
基本上,我只想遍历数据库并定期自动进行一些计算/更新,但是我似乎找不到任何有关此操作的文档。
有人知道如何设置吗?
需要说明的是:我知道我可以为此设置cron工作,但我很好奇Django中是否有某些功能可以提供此功能。我希望人们能够自己部署此应用程序,而无需进行大量配置(最好为零)。
cron
我已经考虑过通过简单地检查自上次将请求发送到站点以来是否应该运行某个作业来“追溯地”触发这些操作,但是我希望有一些清洁的方法。
我采用的一种解决方案是这样做:
1)创建一个自定义管理命令,例如
python manage.py my_cool_command
2)在需要的时间使用cron(在Linux上)或at(在Windows上)运行我的命令。
at
这是一个简单的解决方案,不需要安装沉重的AMQP堆栈。但是,使用其他答案中提到的诸如Celery之类的东西有很好的优势。特别是,使用Celery很好,不必将应用程序逻辑散布到crontab文件中。但是,cron解决方案非常适合中小型应用程序,并且你不需要太多外部依赖项。
编辑:
在更高版本的Windows中,at不建议在Windows 8,Server 2012及更高版本中使用该命令。你可以使用schtasks.exe相同的用途。
schtasks.exe