如何在确切的时间内运行 django-cron 作业



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

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

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

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

你可以将你设置为实际的 cronjob,它驱动 django-cron 只在这些时间运行(如果您希望它运行其他作业,这将降低它的有用性,但适用于你描述的用例)。 在这种情况下,您的 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 等),它们在某些情况下是这样。

相关内容

  • 没有找到相关文章

最新更新