Celery 任务未在提供的开始时间开始
Celery task not starting at the start time provided
我有一个 Django 应用程序,它利用 celery 来处理用户计划的任务。我目前遇到一个问题,我为 PerodicTask 设置了开始时间,但它没有在那个特定时间开始,而是在稍后的某个时间开始。
环境:
- 芹菜 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
参数的用途?
我试过 IntervalSchedule
以及 CrontabSchedule
似乎都没有在准确的开始时间开始。
奖励: 我的发现中真正奇怪的是,如果我将 IntervalSchedule
设置为每 分钟 它实际上确实,事实上,启动正确并且 运行 正确,但如果我将其设置为其他任何设置,它就不再有效。
您需要将 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()
不确定这是错误还是功能,但对我来说效果很好,
我有一个 Django 应用程序,它利用 celery 来处理用户计划的任务。我目前遇到一个问题,我为 PerodicTask 设置了开始时间,但它没有在那个特定时间开始,而是在稍后的某个时间开始。
环境:
- 芹菜 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
参数的用途?
我试过 IntervalSchedule
以及 CrontabSchedule
似乎都没有在准确的开始时间开始。
奖励: 我的发现中真正奇怪的是,如果我将 IntervalSchedule
设置为每 分钟 它实际上确实,事实上,启动正确并且 运行 正确,但如果我将其设置为其他任何设置,它就不再有效。
您需要将 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()
不确定这是错误还是功能,但对我来说效果很好,