设置定时任务?
设置定时任务?
我正在使用Django开发Web应用程序,我想知道是否有一种方法可以定期安排计划运行。
基本上,我只想自动并定期地运行数据库并进行一些计算/更新,但是我似乎找不到任何关于如何执行此操作的文档。
有人知道如何设置此功能吗?
澄清一下:我知道我可以设置cron
作业来执行此操作,但我很想知道Django是否提供了此功能。我希望人们能够自己部署此应用程序而无需进行大量配置(最好为零)。
我考虑通过简单地检查是否应该自上次发出站点请求以来运行作业的方式“回溯”触发这些操作,但希望能找到更简洁的方法。
admin 更改状态以发布 2023年5月21日
我采用的一种解决方案是:
1)创建自定义管理命令,例如
python manage.py my_cool_command
2)使用 cron
(在Linux上)或 at
(在Windows上)在所需的时间运行自己的命令。
这是一种简单的解决方案,不需要安装庞大的AMQP栈。然而,使用像Celery这样的东西会有很好的优势,详见其他答案。特别是,使用Celery时,不必将应用程序逻辑分散到crontab文件中。但是对于中小型应用程序且不想有太多外部依赖的情况下,cron的解决方案非常有效。
编辑:
在Windows的新版本中,at
命令已被弃用,适用于Windows 8、Server 2012及以上版本。您可以使用schtasks.exe
来达到同样的目的。
****更新**** 这是Django文档中编写自定义管理命令的新链接