首页 文章

芹菜 - [Errno 111]使用延迟()触发芹菜任务时拒绝连接

提问于
浏览
0

我有两个应用程序服务器(都有django应用程序) . 两者都有芹菜 Worker 跑步 . RabbitMQ服务器设置在第三个不同的服务器上 .

当使用 delay() 从两个应用程序的服务器中的任何一个通过shell执行任何测试任务时,它们可以正常执行 .

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

但是对于server2(具有与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)

1 回答

  • 0

    我会说在调用server2上的延迟之前开始添加一些额外的日志记录调用,以确保你的celery配置在运行它作为web服务器时是正确的(而不是manage.py shell实例) . 听起来像gunicorn / uwsgi / apache / magic的一些启动脚本没有加载正确配置芹菜所需的一些变量 . 或者它只是在某种情况下被覆盖 .

    真的很糟糕的方法是在server2上运行你的web服务器作为manage.py runserver并在你打电话给 .delay() 之前把PDB放在那里然后捅了一下 . 在你做这件事的时候,并不是你想要普通互联网打开的东西,但是当其他一切都失败时......

相关问题