2016-10-05 198 views
0

我有两个应用程序服务器(都有django应用程序)。两个芹菜工都在运行。 RabbitMQ服务器设置在第三个不同的服务器上。Celery - [Errno 111]当使用延迟触发芹菜任务时连接被拒绝()

当任何测试任务是从任何两个应用程序的服务器的使用,通过外壳delay()执行,他们得到执行罚款。

如果相同的任务从server1的触发从浏览器(通过Ajax)再次工作正常。

但在服务器2(具有相同的配置和代码server1的),当相同的任务从它给浏览器触发的情况下[错误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 shell也不会执行任务。 – ndk

+0

它看起来像是阻止了从server2到rabbitmq服务的网络连接 - 您应该尝试使用基本网络诊断工具来弄清楚发生了什么。对于非常基本的尝试,例如telnet从服务器2发送到端口5672上的rabbitmq主机 – scytale

回答

0

我想说开始增加Server2上调用延迟之前一些额外的日志调用只是为了确保运行它作为一个Web服务器时,你的芹菜配置是正确的(如与manage.py shell实例相反)。这听起来像gunicorn/uwsgi/apache/magic的一些启动脚本没有加载正确配置芹菜所需的一些变量。或者在这种情况下被忽略。

真的很可怕的方法是在server2上将您的web服务器作为manage.py runserver运行,并在您拨打.delay()并拨打电话前将PDB放在那里。你要开放给互联网,而你这样做,但是当一切都失败了不完全的东西...

相关问题