сообщения celery beat никогда не поступают на rabbitmq

У меня много проблем с выполнением определенных задач с помощью celery beat. Некоторые задачи, подобные приведенной ниже, запускаются beat, но RabbitMQ никогда не получает сообщения.

В моем файле настроек django у меня есть следующая периодическая задача

CELERYBEAT_SCHEDULE = {
    ...
    'update_locations': {
        'task': 'cron.tasks.update_locations',
        'schedule': crontab(hour='10', minute='0')
    },
    ...
}

в 10 UTC beat выполняет задачу, как и ожидалось

[2015-05-13 10:00:00,046: DEBUG/MainProcess] cron.tasks.update_locations sent. id->a1c53d0e-96ca-4673-9d03-972888581176

но это сообщение никогда не поступает в rabbitmq (я использую модуль трассировки в rabbitmq для отслеживания входящих сообщений). У меня есть несколько других задач, которые, похоже, работают нормально, но некоторые задачи, подобные приведенной выше, никогда не запускаются. Запуск задач вручную в django с помощью cron.tasks.update_locations.delay() запускает задачу без проблем. Обратите внимание, что мой Rabbitmq находится на другом сервере, чем beat.

Могу ли я что-нибудь сделать, чтобы убедиться, что сообщение действительно отправлено и/или получено rabbitmq? Есть ли лучший или другой способ запланировать эти задачи, чтобы обеспечить их выполнение?


person Pim    schedule 13.05.2015    source источник
comment
На данный момент я настроил crontab для запуска запланированных задач с помощью пользовательской команды django. Если задачи выполняются должным образом и подтверждаются rabbitmq, проблема заключается исключительно в битах.   -  person Pim    schedule 13.05.2015


Ответы (1)


Немного сложно ответить по этим минимальным описаниям.

почему это в файле настроек Django? Я ожидал, что настройки конфигурации Celery будут иметь свой собственный объект конфигурации. Посмотрите на http://celery.readthedocs.org/en/latest/reference/celery.html#celery.Celery.config_from_object

person pbhowmick    schedule 13.05.2015
comment
Выполнено stackoverflow.com /вопросы/20116573/ . Beat находит все задачи в файле настроек django при запуске и выполняет задачу, но никогда не доходит до rabbitmq. Хотел бы я предоставить больше информации, не так много, чтобы пройти, кроме регистрации ударов, он отправил сообщение, а rabbitmq так и не получил его. - person Pim; 13.05.2015
comment
@Pim Мне было бы интересно посмотреть, как рабочий вызывается из командной строки. - person pbhowmick; 13.05.2015
comment
В настоящее время я использую python manage.py celery beat -l debug, используя команды сборки djcelery. Эта команда запускается с использованием супервизора для запуска бита в качестве демона. Ранее я использовал raw.githubusercontent.com/celery/celery. /3.1/extra/ с точно такими же результатами. - person Pim; 13.05.2015