[英]Celery - [Errno 111] Connection refused when celery task is triggered using delay()
我有兩個應用程序服務器(都有django應用程序)。 兩者都有芹菜工人在跑。 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)
我要說的是開始添加一些額外的日志記錄調用,然后在server2上調用delay之前,只是為了確保您的celery配置作為Web服務器運行時正確(與manage.py shell實例相對)。 聽起來像是一些針對gunicorn / uwsgi / apache / magic的啟動腳本沒有加載一些實際正確配置celery所需的變量。 或者只是在那種情況下被重寫。
真正可怕的方法是在server2上以manage.py runserver的身份運行您的Web服務器,並在調用.delay()
並四處.delay()
之前在其中放置一個PDB。 在執行此操作時,並不是您想打開通用互聯網的功能,而是其他所有操作都失敗了...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.