2017-01-05 1 views
0

Сценария:Два приложение, использующее сельдерей запланированных задач: «Получено незарегистрированные задачи» ошибка в одном из рабочих

  • Два несвязанных веб-приложений с сельдереем фоновых задачами, выполняющихся на одном сервере.
  • Один экземпляр RabbitMQ
  • Каждое веб-приложение имеет свой собственный virtualenv (включая сельдерей). Такая же версия сельдерея как в virtualenvs.

Я использую следующие командные строки, чтобы запустить рабочий процесс и процесс биений для каждого приложения.

celery -A firstapp.tasks worker 
celery -A firstapp.tasks beat 
celery -A secondapp.tasks worker --hostname foobar 
celery -A secondapp.tasks beat 

Теперь все, кажется, работает хорошо, но в рабочем процессе в secondapp я получаю следующее сообщение об ошибке:

Received unregistered task of type 'firstapp.tasks.do_something' 

Есть ли способ, чтобы изолировать два сельдерей от друг друга?

Я использую версию сельдерея 3.1.16, BTW.

ответ

0

Я считаю, что я исправил проблему, создав vhost RabbitMQ и настроив второе приложение на использование этого.

Создание виртуальных хостов (и набор разрешений):

sudo rabbitmqctl add_vhost /secondapp 
sudo rabbitmqctl set_permissions -p /secondapp guest ".*" ".*" ".*" 

А затем изменить командные строки для второго приложения:

celery -A secondapp.tasks -b amqp://localhost//secondapp worker 
celery -A secondapp.tasks -b amqp://localhost//secondapp beat