2014-09-22 79 views
1

我試圖與在tutorial芹菜:鏈接的任務拋出連接錯誤

add.apply_async((2, 2), link=add.s(16)) 

提到鏈接任務運行一個非常簡單的任務,得到了在工作進程異常:

[2014-09-21 19:56:38,531: WARNING/Worker-1] C:\Python33\lib\site-packages\celery-3.1.15- 

py3.3.egg\celery\app\trace.py:364: RuntimeWarning: Exception raised outside body: OSError(ConnectionRefusedError(10061, 'No connection could be made because the target machine actively refused it', None, 10061),): 
Traceback (most recent call last): 
    File "C:\Python33\lib\site-packages\kombu-3.0.23-py3.3.egg\kombu\utils\__init__.py", line 420, in __call__ 
    return self.__value__ 
AttributeError: 'ChannelPromise' object has no attribute '__value__' 

During handling of the above exception, another exception occurred: 

Traceback (most recent call last): 
    File "C:\Python33\lib\site-packages\kombu-3.0.23-py3.3.egg\kombu\connection.py", line 436, in _ensured 
    return fun(*args, **kwargs) 
    File "C:\Python33\lib\site-packages\kombu-3.0.23-py3.3.egg\kombu\messaging.py", line 173, in _publish 
    channel = self.channel 
    File "C:\Python33\lib\site-packages\kombu-3.0.23-py3.3.egg\kombu\messaging.py", line 190, in _get_channel 
    channel = self._channel = channel() 
    File "C:\Python33\lib\site-packages\kombu-3.0.23-py3.3.egg\kombu\utils\__init__.py", line 422, in __call__ 
    value = self.__value__ = self.__contract__() 
    File "C:\Python33\lib\site-packages\kombu-3.0.23-py3.3.egg\kombu\messaging.py", line 205, in <lambda> 
    channel = ChannelPromise(lambda: connection.default_channel) 
    File "C:\Python33\lib\site-packages\kombu-3.0.23-py3.3.egg\kombu\connection.py", line 756, in default_channel 
    self.connection 
    File "C:\Python33\lib\site-packages\kombu-3.0.23-py3.3.egg\kombu\connection.py", line 741, in connection 
    self._connection = self._establish_connection() 
    File "C:\Python33\lib\site-packages\kombu-3.0.23-py3.3.egg\kombu\connection.py", line 696, in _establish_connection 
    conn = self.transport.establish_connection() 
    File "C:\Python33\lib\site-packages\kombu-3.0.23-py3.3.egg\kombu\transport\pyamqp.py", line 112, in establish_connection 
    conn = self.Connection(**opts) 
    File "C:\Python33\lib\site-packages\amqp-1.4.6-py3.3.egg\amqp\connection.py", line 165, in __init__ 
    self.transport = self.Transport(host, connect_timeout, ssl) 
    File "C:\Python33\lib\site-packages\amqp-1.4.6-py3.3.egg\amqp\connection.py", line 186, in Transport 
    return create_transport(host, connect_timeout, ssl) 
    File "C:\Python33\lib\site-packages\amqp-1.4.6-py3.3.egg\amqp\transport.py", line 299, in create_transport 
    return TCPTransport(host, connect_timeout) 
    File "C:\Python33\lib\site-packages\amqp-1.4.6-py3.3.egg\amqp\transport.py", line 95, in __init__ 
    raise socket.error(last_err) 
OSError: [WinError 10061] No connection could be made because the target machine actively refused it 

我在transport.py中做了一個簡短的調試,發現工作人員試圖連接到本地主機上的端口5672。看起來工作人員認爲鏈接任務需要通過本地RabbitMQ實例執行。這很奇怪,因爲我在配置設置中指定了遠程RabbitMQ代理。另外,如果我只需運行的異步調用沒有鏈接的任務設置工作:

add.apply_async((2, 2)) 

這裏是我的設置:

  1. 使用的RabbitMQ作爲經紀人和Redis的作爲結果後端遠程Windows服務器
  2. 在另一臺Windows 7機器上運行我的測試客戶端

任何人都可以點亮一下嗎?謝謝。

+1

我想出了一個解決方法來明確指定使用celery [命令選項](https://celery.readthedocs.org/en/latest/reference/celery.bin.base.html)的代理URL。在我看來,鏈接的任務不會正確導入設置。 – Tuzki 2014-09-22 01:45:17

+0

它解決了我,以及你知道爲什麼需要明確指定?我用redis作爲經紀人。 – ratbaby 2015-05-31 12:50:50

回答

1

默認情況下celry嘗試cennect到AMQP://本地主機(服務器的RabbitMQ)prof link 所以之前運行任何任務,你應該安裝RabbitMQ的服務器或配置芹菜使用Redis的或其他經紀人。 因此安裝:

sudo apt-get install rabbitmq-server 

應該解決您的問題。