5

在使用 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 countHeroku 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 成功:无

对此的任何帮助将不胜感激。非常感谢!

4

1 回答 1

1

I sort of figured it out. Because I was debugging, I was naturally setting tasks to run in 5 or 10 minutes. I don't know exactly why, but my set up has a hard time handling this. It's like it needs a certain amount of time to process and queue the task. Anyway, tasks scheduled for more than an hour or so in advance have been running correctly.

于 2012-09-05T18:21:27.207 回答