5

我在这篇文章中描述了完全相同的问题,但答案根本没有帮助。简而言之,我使用的是Tivix django-cron,cron 作业没有定期运行。

为了说明问题,以下 cron 作业类旨在每分钟一次运行runcrons命令发送电子邮件。但实际上,它只发送一封电子邮件,不再发送。这违背了 cron 的目的......我错过了什么?

class TestCron(CronJobBase):
    schedule = Schedule(run_every_mins=1)
    code = 'test_cron_philip'

    def do(self):
        send_mail('cron test', 'body is test body', 'coach_zhong@163.com',
                  ['admin@dessert.webfactional.com'],fail_silently=False)
4

1 回答 1

8

是的,你错过了一些东西(“runcrons”不是后台守护程序)。从文档:

“现在每次运行管理命令 python manage.py runcrons 时,所有的 crons 都会在需要时运行。根据应用程序的不同,可以根据需要从 Unix crontab 调用管理命令。每 5 分钟通常适用于我的大多数应用程序。”

这意味着您必须将“runcrons”命令放在您的 crontab 中。

例子:

您有一些 CronJob 每 30 分钟执行一次。

要使其运行,您必须编辑您的crontab(linux、mac)或任务调度程序(windows)以运行“python manage.py runcrons”,例如 1 分钟。

如果您运行此程序,您的 CronJob 将每 1 分钟 ping 一次,并在必要时运行(每 30 分钟或您设置的任何值)。

希望这可以帮助。

于 2013-07-15T07:43:46.010 回答