【问题标题】:How to run django-cron job in exact time如何在准确的时间运行 django-cron 作业
【发布时间】:2012-04-11 07:20:59
【问题描述】:

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

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

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

【问题讨论】:

  • 没有。下面的答案没有用。但仅在我的情况下。我无法在工作 PC 上安装 cron。我需要所有在一个packege。跨平台。
  • 我认为没有跨平台的 cron 解决方案。在 nix 系统上,您可以使用 cron,但我不确定在 Windows 上可以使用什么。希望其他人有一个想法!

标签: django cron django-cron


【解决方案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 分钟后运行等等...),它们在某些情况下是这样的。

【讨论】:

    猜你喜欢
    • 2011-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-04
    • 2016-06-13
    • 2015-03-08
    • 2021-05-10
    • 2011-09-27
    相关资源
    最近更新 更多