设置定时任务?

17 浏览
0 Comments

设置定时任务?

我正在使用Django开发Web应用程序,我想知道是否有一种方法可以定期安排计划运行。

基本上,我只想自动并定期地运行数据库并进行一些计算/更新,但是我似乎找不到任何关于如何执行此操作的文档。

有人知道如何设置此功能吗?

澄清一下:我知道我可以设置cron作业来执行此操作,但我很想知道Django是否提供了此功能。我希望人们能够自己部署此应用程序而无需进行大量配置(最好为零)。

我考虑通过简单地检查是否应该自上次发出站点请求以来运行作业的方式“回溯”触发这些操作,但希望能找到更简洁的方法。

admin 更改状态以发布 2023年5月21日
0
0 Comments

Celery是一个基于AMQP(RabbitMQ)构建的分布式任务队列。它还以类似于cron的方式处理周期性任务(请参阅周期性任务)。根据您的应用程序而定,它可能是值得一观的。

Celery与django(文档)相当容易设置,并且周期性任务实际上会在停机期间跳过错过的任务。Celery还具有内置的重试机制,以防任务失败。

0
0 Comments

我采用的一种解决方案是:

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文档中编写自定义管理命令的新链接

0