我有一个利用celery来处理用户计划任务的Django应用。我目前遇到一个问题,我为PerodicTask设置了开始时间,但它没有在该特定时间开始,而是在某个时间之后开始。
环境:
task = PeriodicTask(name="foo",task="bar_task",
start_time=DateTime5MinutesAhead,
interval=EveryHourInterval)
task.save()
我希望任务在创建任务后的5分钟内首先运行,然后在之后的每个小时内运行。相反,它似乎在以后任意运行,完全忽略了start_time
参数。
我误会了start_time
参数的含义吗?
我尝试使用IntervalSchedule
和CrontabSchedule
而且似乎都没有在确切的开始时间开始。
奖金:我发现的结果中真正真正奇怪的是,如果我每隔分钟使用IntervalSchedule
设置,它实际上会执行 ,实际上,可以正确启动并正确运行,但是如果我将其设置为其他任何设置,它将不再起作用。
答案 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()
不确定是错误还是功能,但对我来说效果很好,