2016-10-05 1 views
0

У меня есть два сервера приложений (оба имеют приложение django). У обоих есть работник сельдерея. Сервер RabbitMQ настроен на третьем сервере.Сельдерей - [Errno 111] Соединение отклонено, когда задача сельдерея запускается с использованием delay()

Когда какая-либо из тестовых задач выполняется с любого из двух серверов приложения через оболочку с использованием delay(), они выполняются нормально.

Если эта же задача запускается с сервера1 из браузера (через ajax), он снова работает отлично.

Но в случае сервера2 (с тем же конфигурационным кодом и кодом, что и сервер 1), когда одна и та же задача запускается из браузера, он дает сообщение об ошибке «Ошибка 111».

Некоторые из установленных пакетов на server1 или server2 являются:

celery 3.1.18 
amqp 1.4.9 
django 1.8.5 

Может кто-нибудь помочь мне с этим? Благодаря!

Трассировка ошибка выглядит следующим образом:

 
File "../lib/python2.7/site-packages/celery/app/task.py" in delay 
    453.   return self.apply_async(args, kwargs) 
File "../lib/python2.7/site-packages/celery/app/task.py" in apply_async 
    559.    **dict(self._get_exec_options(), **options) 
File "../lib/python2.7/site-packages/celery/app/base.py" in send_task 
    353.     reply_to=reply_to or self.oid, **options 
File "../lib/python2.7/site-packages/celery/app/amqp.py" in publish_task 
    305.    **kwargs 
File "../lib/python2.7/site-packages/kombu/messaging.py" in publish 
    172.      routing_key, mandatory, immediate, exchange, declare) 
File "../lib/python2.7/site-packages/kombu/connection.py" in _ensured 
    457.           interval_max) 
File "../lib/python2.7/site-packages/kombu/connection.py" in ensure_connection 
    369.       interval_start, interval_step, interval_max, callback) 
File "../lib/python2.7/site-packages/kombu/utils/__init__.py" in retry_over_time 
    246.    return fun(*args, **kwargs) 
File "../local/lib/python2.7/site-packages/kombu/connection.py" in connect 
    237.   return self.connection 
File "../lib/python2.7/site-packages/kombu/connection.py" in connection 
    742.     self._connection = self._establish_connection() 
File "../lib/python2.7/site-packages/kombu/connection.py" in _establish_connection 
    697.   conn = self.transport.establish_connection() 
File "../lib/python2.7/site-packages/kombu/transport/pyamqp.py" in establish_connection 
    116.   conn = self.Connection(**opts) 
File "../lib/python2.7/site-packages/amqp/connection.py" in __init__ 
    165.   self.transport = self.Transport(host, connect_timeout, ssl) 
File "../lib/python2.7/site-packages/amqp/connection.py" in Transport 
    186.   return create_transport(host, connect_timeout, ssl) 
File "../lib/python2.7/site-packages/amqp/transport.py" in create_transport 
    299.   return TCPTransport(host, connect_timeout) 
File "../lib/python2.7/site-packages/amqp/transport.py" in __init__ 
    95.    raise socket.error(last_err) 
+0

Ваш rabbitmq не работает или недоступен –

+0

Нет rabbitmq работает нормально. В противном случае с помощью оболочки python задача не была бы выполнена. – ndk

+0

похоже, что что-то препятствует сетевому подключению с сервера2 к сервису rabbitmq - вы должны попробовать использовать базовые средства диагностики сети, чтобы выяснить, что происходит. Для очень простой попытки, например, 'telnet' с сервера 2 на хост rabbitmq на порту 5672 – scytale

ответ

0

Я бы сказал, что начать добавлять некоторые дополнительные вызовы протоколирования перед вызовом задержки на server2 просто чтобы убедиться, что ваш сельдерей конфигурации является правильным при работе его в качестве веб-сервера (как напротив экземпляра оболочки manage.py). Похоже, что какой-то сценарий запуска для gunicorn/uwsgi/apache/magic не загружает некоторую переменную, необходимую для правильной настройки сельдерея. Или это просто переоценивается в этом контексте.

На самом деле ужасный метод запускает ваш веб-сервер на сервере server2 в качестве управляющего сервера и размещает там PDB прямо перед вашим вызовом до .delay() и ткнул. Не совсем то, что вы хотите открыть для общего интернета, пока вы это делаете, но когда все остальное терпит неудачу ...

Смежные вопросы