我已经成功地使用教程中的默认设置和在Ubuntu上运行的rabbitmq启动了Celery任务。当我安排一个没有延迟的任务时,一切正常,但是当我给它们一个eta(预计执行时间),它们会被安排在将来,好像我的时钟出了问题。
这里有一些Python代码正在请求任务:
for index, to_address in enumerate(email_addresses):
# schedule one email every two seconds
delay = index * 2
log.info("MessageUsersFormView.process_action() scheduling task,"
"email to %s, countdown = %i" % (to_address, delay) )
tasks.send_email.apply_async(args=[to_address, subject, body],
countdown = delay)
第一个任务应该立即执行,然后每两秒执行一次。查看我的celery控制台,第一个任务会立即执行,然后其他任务会在两秒钟后按计划执行,但从明天开始:
[2012-03-09 17:32:40,988: INFO/MainProcess] Got task from broker: stabil.tasks.send_email[24fafc0b-071b-490b-a808-29d47bbee435]
[2012-03-09 17:32:40,989: INFO/MainProcess] Got task from broker: stabil.tasks.send_email[3eb6c3ea-2c84-4368-babe-8a2ac0093836] eta:[2012-03-10 01:32:42.971072-08:00]
[2012-03-09 17:32:40,991: INFO/MainProcess] Got task from broker: stabil.tasks.send_email[a53110d6-b704-4d9c-904a-8d74b99a33af] eta:[2012-03-10 01:32:44.971779-08:00]
[2012-03-09 17:32:40,992: INFO/MainProcess] Got task from broker: stabil.tasks.send_email[2363329b-47e7-4edd-b38e-b09fed232003] eta:[2012-03-10 01:32:46.972422-08:00]
我对Celery和RabbitMQ都是完全陌生的,所以任何关于如何解决这个问题或寻找原因的提示都将是非常有用的。这是在VMWare虚拟机上的Ubuntu系统中运行的,但是我已经正确设置了时钟。