在Windows上配置Celery



我已经在Windows 7 64位机器上安装了Celery 3.1.5、RabbitMQ服务器3.2.1和Python 2.7.5。这是我用芹菜从第一步复制的代码。

from celery import Celery
app = Celery('tasks', backend='amqp', broker='amqp://guest@localhost//')
@app.task
def add(x, y):
    return x + y

当我从python shell执行任务时,我收到了"操作超时"的异常消息。state和ready()总是返回PENDING&错误。

>>> from tasks import *
>>> result = add.delay(4, 4)
>>> result.ready()
False
>>> result.state
'PENDING'
>>> result.get(timeout=20)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:Python27libsite-packagesceleryresult.py", line 136, in get
    interval=interval)
  File "C:Python27libsite-packagescelerybackendsamqp.py", line 154, in wait_for
    raise TimeoutError('The operation timed out.')
celery.exceptions.TimeoutError: The operation timed out.
>>>

我验证了RabbitMQ服务器正在运行,但我不知道为什么会抛出芹菜异常。

您可以尝试使用命令启动工作程序

celery -A proj worker -l info --pool==solo

尽管有很多事情会导致result.get(,等等——我有这个问题,解决方案是@Deja_vu建议的"--pool=solo"(注意一等于符号,而不是二)。

默认的"pool"选项为"prefork"(请参阅http://docs.celeryproject.org/en/latest/reference/celery.bin.worker.html#module-celery.bin.worker)。因此,这可能是Celery在Windows下的"预处理"系统中的错误:请参阅https://github.com/celery/celery/issues/2146

相关StackOverflow问题:

  • 芹菜';入门';无法检索结果;始终挂起
  • 从Celery队列获取结果时出现问题

相关内容

  • 没有找到相关文章

最新更新