Celery:链接任务抛出连接错误

时间:2014-09-22 00:12:06

标签: celery

我尝试使用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中做了一个简短的调试,发现该worker正在尝试连接到localhost上的端口5672。似乎工作者认为链接的任务需要通过本地RabbitMQ实例执行。这很奇怪,因为我在配置设置中指定了一个远程RabbitMQ代理。如果我只是在没有链接任务的情况下运行异步调用,该设置也可以工作:

add.apply_async((2, 2))

这是我的设置:

  1. 将RabbitMQ用作代理,将Redis用作远程Windows服务器上的结果
  2. 在另一台Windows 7计算机上运行我的测试客户端
  3. 任何人都能解开一些光明吗?谢谢。

0 个答案:

没有答案