2014-09-22 50 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 

应该解决您的问题。