У меня есть установка Celery 3.1.19, в которой используется BROKER_URL, включая виртуальный хост.Сельдерей: @shared_task и нестандартный BROKER_URL
# in settings.py
BROKER_URL = 'amqp://guest:[email protected]:5672/yard'
сельдерея начинает работать нормально, загружает задачи, и задачи, которые я определить в @ app.task декоратор прекрасно работают. Я предполагаю, что моя конфигурация кролика и сельдерея с этой целью верна.
Задачи, определяемые с помощью @shared_tasks и загрузка с помощью app.autodiscover_tasks, по-прежнему загружаются правильно при запуске. Однако, если я вызываю задачу, сообщение заканчивается в (все еще существующем) amqp: // guest: guest @ localhost: 5672/virtual host.
Вопрос: Что мне здесь не хватает? Где общие задачи получают свою фактическую конфигурацию.
А вот еще некоторые детали:
# celery_app.py
from celery import Celery
celery_app = Celery('celery_app')
celery_app.config_from_object('settings')
celery_app.autodiscover_tasks(['connectors'])
@celery_app.task
def i_do_work():
print 'this works'
и разъемы/tasks.py (с инициализации .py в той же папке):
# in connectors/tasks.py
from celery import shared_task
@shared_task
def I_do_not_work():
print 'bummer'
И снова shared Задача также подхвачена экземпляром Celery. Ему просто не хватает контекста для отправки сообщений вправо BROKER_URL.
КПП. почему shared_tasks так чисто документированы. Они полагаются на какой-то контекст Django? Я не использую Django.
Или мне нужны дополнительные параметры в моих настройках?
Большое спасибо.
Ответ может быть здесь https://github.com/celery/celery/issues/1937. Но сегодня я должен остановиться. –
Проблема, похоже, не ограничивается совместными задачами. Просто задачи в отдельном файле, похоже, ведут себя одинаково. Вопрос скорее в том, где задачи возникают из контекста. –