python - celery 任务 eta 已关闭,使用 rabbitmq

标签 python rabbitmq celery django-celery

使用教程中的默认设置和在 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 都是全新的,所以任何关于如何解决这个问题或在哪里寻找原因的提示都会很棒。这是在 Ubuntu 的 VMWare 虚拟机上,但我的时钟设置正确。 谢谢!

最佳答案

我认为它确实如您所愿地工作。左边的时间(方括号之间和 INFO/MainProcess 之前)以本地时间显示,但 eta 时间显示为 UTC 时间。例如:

获取控制台输出第二行中显示的 ETA 时间:

2012-03-10 01:32:42.971072-08:00

减去 8 小时(-08:00 是时区偏移量),您将得到:

2012-03-09 17:32:42.971072

发送时间后仅 2 秒:

2012-03-09 17:32:40,989

我希望这是有道理的。处理时间常常让我头疼。

关于python - celery 任务 eta 已关闭,使用 rabbitmq,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9643268/

相关文章:

python - 高效循环和比较两个相似对象的属性

java - Vert.x:处理 Rabbitmq 消费者背压而不丢弃新消息

python - Python 的 rdb 调试断点处不存在局部变量(在 celery 任务中)

java - Spring RabbitMQ 发布和 linux amqp-consumer 并带有确认

django - 你如何在 Django 中测试一个在自身内部委托(delegate)任务的方法?

rabbitmq - 运行客户端 channel 备份轮询器 Celery Beat

python - 如何子类化 collections.Iterator?

python - 计算数据帧 A 的每一行在另一个数据帧的许多元素的每一行中出现的次数

python - 为什么我不能得到这个简单的 Python 字典的键/值对?

java - 正确关闭 RabbitMQ channel 和连接