0

我不能在我的项目中使用 celery,只能使用 django-cron。我需要每天运行 2 次任务:

  • 上午 11:59
  • 晚上 11:59

我可以做吗?我发现只有 RUN_EVERY(以分钟或秒为单位)变量。

4

1 回答 1

1

我熟悉这个 django-cron: https ://github.com/andybak/django-cron

您可以将驱动 django-cron 的实际 cronjob 设置为仅在这些时间运行(如果您希望它运行其他作业但适用于您描述的用例,这会降低它的有用性)。在这种情况下,您的 crontab 条目应类似于:

59 11,23 * * * /path/to/python /path/to/manage.py cronjobs

使用该 crontab 条目,django cron 每天只会在上午 11:59 和晚上 11:59 运行两次,因此即使您指定每分钟运行一次作业,它也只会在这些时间运行。如果 cron-job 因任何原因失败,则在接下来的 12 小时内不会运行。

或者,您可以将作业设置为每 12 小时运行一次

HOUR * 12

在它运行一次后,手动编辑数据库说最后一次运行是在晚上 11:59 或上午(以将来为准),然后它将在该时间之后每 12 小时开始运行一次,所以它应该总是在正好 11 点 59 分。在这种情况下,如果作业失败,它可能会在 12:00 或更晚开始运行,因为它试图赶上。

如果您使用的 django-cron 与我一开始提到的不同,那么其中一些想法可能适用,但可能不适用。如果您使用的是开头提到的版本,请确保您使用了它的最新版本,我在 5 天前对其进行了提交,这使得工作不会随着时间的推移而漂移(即在 61 分钟而不是 60 分钟后运行)等...),他们在某些情况下。

于 2012-04-11T08:29:14.553 回答