1

我知道有很多关于这个的问题,尤其是这个:Django - Set Up A Scheduled Job? .

但我想了解的是,Django 内部的计划任务实际上是如何工作的?

我的简单思考方式是某处有一个无限循环,就像这样(每 60 秒运行一次),

import time
interval=60  #60 seconds 
while True:
    some_method()
    time.sleep(interval)

问题:你把这个无限循环放在哪里?Django 应用程序的某些部分是否与应用程序的其余部分一起在后台运行?

谢谢!

4

1 回答 1

1

Django 不执行计划任务。如果您想要计划任务,您需要一个始终运行并且可以在适当时间启动您的任务的守护程序。

Django 仅在发出 http 请求时运行。如果一个月没有人发出http请求,django就不会运行一个月。如果这一秒有 45 个 http 请求,django 将在这一秒运行 45 次(在没有缓存的情况下)。

您可以在 django 框架中编写脚本(称为管理命令),这些脚本从某些外部服务(如 cron)中调用。这是尽可能接近你想要的东西。如果是这种情况,那么您参考的问题/答案就是获取操作方法的地方。

可能在 unixy 系统上,cron 是最简单的外部服务。在最近的 linux 系统上,cron 有一个目录 /etc/cron.d,您可以将应用程序的 cron 配置文件放入其中,并且它不会干扰系统上的任何其他 cron 作业。无需编辑现有文件。

于 2013-06-28T22:56:47.220 回答