在使用 Celery 和 RabbitMQ 时,无法让计划任务在指定的未来时间运行。
在 Heroku 服务器上使用 Django,并带有 RabbitMQ 附加组件。
问题:
有时任务根本不运行,有时它们确实运行,但它们运行的时间相差很大(比如一个小时)。
未运行的示例任务:
当我尝试使用倒计时或 ETA 运行任务时,它从未真正执行过。这是一个未运行的示例 ETA 任务:
>>> dummy_task.apply_async(eta=datetime.datetime.now() + timedelta(seconds=60))
<AsyncResult: 03001c1c-329e-46a3-8180-b115688e1865>
结果日志:
2012-07-24T14:03:08+00:00 应用程序 [scheduler.1]: [2012-07-24 10:03:08,909: INFO/MainProcess] 从经纪人那里得到任务:events.tasks.dummy_task[910ff406-d51c-4c29-bdd1-fec1a8168c12] 埃塔:[2012-07-24 10:04:08.819528+00:00]
一分钟后,什么也没有发生。我的unacknowledged message count
Heroku RabbitMQ 管理控制台中的 增加一并保持在那里。
这有效:
我已确保 celery 任务已正确注册,并且 RabbitMQ 已配置为通过验证我是否可以使用 delay() 方法运行任务来接受任务。
>>> dummy_task.delay()
<AsyncResult: 1285ff04-bccc-46d9-9801-8bc9746abd1c>
结果日志:
2012-07-24T14:29:26+00:00 应用程序 [worker.1]: [2012-07-24 10:29:26,513: INFO/MainProcess] 从经纪人那里得到任务:events.tasks.dummy_task[1285ff04-bccc-46d9-9801-8bc9746abd1c] …… 2012-07-24T14:29:26+00:00 应用程序 [worker.1]: [2012-07-24 10:29:26,571: INFO/MainProcess] 任务 events.tasks.dummy_task[1285ff04-bccc-46d9-9801-8bc9746abd1c] 0.0261888504028s 成功:无
对此的任何帮助将不胜感激。非常感谢!