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