2017-01-01 3 views
3

В настоящее время я использую предварительную версию по умолчанию для сельдерея для параллелизма, и я хочу использовать Eventlet.Django Celery Eventlet - Получение ошибки «Нет адреса»

Я попытался установить Eventlet и использовать его для параллелизма, но я получаю следующее сообщение об ошибке:

[2017-01-01 04:11:14,233: ERROR/MainProcess] consumer: Cannot connect to amqp://application:**@rabbit:5672//: [Errno -2] No address found. 

Но он хорошо работает с по умолчанию PreFork и я мог выполнять рабочие места асинхр.

настоящее время я использую Джанго 1.10 и сельдерей 4.0.1

-------------- [email protected] v4.0.1 (latentcall) 
---- **** ----- 
--- * *** * -- Linux-4.4.0-57-generic-x86_64-with-Ubuntu-16.04-xenial 2017-01-01 03:59:11 
-- * - **** --- 
- ** ---------- [config] 
- ** ---------- .> app:   fivefrets:0x7f97ca281a58 
- ** ---------- .> transport: amqp://fivefrets:**@rabbit:5672// 
- ** ---------- .> results:  disabled:// 
- *** --- * --- .> concurrency: 10 (eventlet) 
-- ******* ---- .> task events: OFF (enable -E to monitor tasks in this worker) 
--- ***** ----- 
-------------- [queues] 
      .> celery   exchange=celery(direct) key=celery 

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

Просим вас связаться с нами, если у вас есть вопросы.

Не уверен, что мне не хватает

ответ

1

«найдено ни» выглядит как сообщение об ошибке с разрешением DNS. Если вы можете решить адрес своего сервера rabbitmq, проблема может быть связана с Eventlet.

Если вы используете Eventlet 0.20.0, похоже, что это может нарушить разрешение DNS. См.: https://github.com/nameko/nameko/issues/392

Если это так, возможно, вы можете использовать другую версию eventlet с чем-то вроде pip install --upgrade eventlet==0.19.0 или pip install --upgrade eventlet==0.20.1.

+1

спасибо ..! разрешение в https://github.com/nameko/nameko/issues/392 pip install -U https://github.com/eventlet/eventlet/archive/f266be30f5c3ff1889e9ac3f0bad698a49d40e99.zip –

+1

сработало. спасибо за то, что указали мне на правильную проблему. https://github.com/nameko/nameko/issues/392 –

+0

Пожалуйста, измените ее на 'eventlet == 0.20.1' – temoto

0

Если вы нажмете эту ошибку на eventlet==0.20.0, значит, у вас есть неправильная конфигурация. /etc/resolv.conf с search domain, но вы отправляете относительное имя хоста rabbit, для которого правильное DNS-разрешение должно пытаться выполнить только запрос rabbit.domain к серверам имен.

Правильные варианты решения:

  • ввести домен .local к сети, изменение resolv.conf, DNS записи и конфиги приложения к rabbit.local. Все, что считается, это лучший способ.
  • удалить search линии из /etc/resolv.conf
  • надстройки завершающей точки для хостов с одним уровня в конфиги приложения rabbit. - что делает полное имя хоста, который всегда разрешен правильно

Для менее чем идеальный способа, обновить eventlet>=0.20.1 содержит патч который запрашивает запросы верхнего уровня, как если бы они были полностью квалифицированы (в данном случае rabbit.)