芹菜任务未在提供的开始时间开始

时间:2019-08-15 02:59:18

标签: django celery python-3.7 celerybeat

我有一个利用celery来处理用户计划任务的Django应用。我目前遇到一个问题,我为PerodicTask设置了开始时间,但它没有在该特定时间开始,而是在某个时间之后开始。

环境:

  • Celery 4.3
  • Django 2.2
  • Python 3.7
task = PeriodicTask(name="foo",task="bar_task",
                    start_time=DateTime5MinutesAhead, 
                    interval=EveryHourInterval)
task.save()

我希望任务在创建任务后的5分钟内首先运行,然后在之后的每个小时内运行。相反,它似乎在以后任意运行,完全忽略了start_time参数。

我误会了start_time参数的含义吗?

我尝试使用IntervalScheduleCrontabSchedule

而且似乎都没有在确切的开始时间开始。

奖金:我发现的结果中真正真正奇怪的是,如果我每隔分钟使用IntervalSchedule设置,它实际上会执行 ,实际上,可以正确启动并正确运行,但是如果我将其设置为其他任何设置,它将不再起作用。

1 个答案:

答案 0 :(得分:1)

您需要将last_run_at设置为start_time-interval

        task = PeriodicTask(name="foo",task="bar_task",
                start_time=DateTime5MinutesAhead,
                last_run_at=DateTime5MinutesAhead - timedelta(hour=1),
                interval=EveryHourInterval)
        task.save()

不确定是错误还是功能,但对我来说效果很好,

参考: https://github.com/celery/django-celery-beat/issues/259

相关问题