Эта задача сельдерея выключена, используя rabbitmq - PullRequest
5 голосов
/ 10 марта 2012

Я получил задачи Celery, которые выполняются нормально, используя настройки по умолчанию в руководствах и rabbitmq, работающие в Ubuntu. Все хорошо, когда я планирую задачу без задержки, но когда я даю им это, они планируются в будущем, как будто мои часы где-то выключены.

Вот код 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)

Итак, первый должен выходить немедленно, а затем каждые две секунды. Глядя на мою консоль из сельдерея, первая происходит немедленно, а затем другие планируются с интервалом в две секунды, но начинаются завтра:

[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, но у меня установлены часы правильно. Спасибо!

1 Ответ

2 голосов
/ 10 марта 2012

Я думаю, что это на самом деле работает, как вы ожидаете. Время слева (между квадратными скобками и до INFO / MainProcess) представлено в местное время, но время в сети отображается как 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

Надеюсь, это имеет смысл. Работа со временем часто вызывает у меня головную боль.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...