规范芹菜单文件你好世界



我似乎在网上任何地方都找不到一个文件可以从头到尾用 Celery 和 Python 来演示它,所以我尝试制作一个。由于某种原因,这不起作用,我是芹菜的新手。test_celery.py,我添加了以下内容:

from celery import Celery
import time
app = Celery(
    'test_celery'
    ,broker= 'redis://localhost/0',
    backend='redis://localhost/1'
)
@app.task
def add(x, y):
    time.sleep(2)
    return x + y
if __name__ == '__main__':
    result = add.delay(4, 4)
    print( result.get() )

然后我在本地主机上运行了 redis 服务器,并在控制台上输入:

celery -A test_celery worker --loglevel=info

所以,现在工人正在听,我试着运行python test_celery.py认为我应该在控制台输出中看到我的精彩 8。在工作线程控制台的日志中,我看到了[2015-01-02 16:53:08,807: INFO/MainProcess] Task test_celery.add[2c6b19c0-3a3f-45d2-8024-64e112fa3419] succeeded in 1.9970000002067536s: 8这是预期的,但对result.get的调用在主程序控制台中挂起。

我一定在这里缺少一些基本的东西,如果有人能帮忙,那就太好了。

解决方案是简单地使用 app.conf.update 调用设置结果后端,而不是在 Celery 对象的构造函数中设置。

我在 Celery GitHub 页面上的这篇文章中找到了这个问题的解决方案。这仍然是一个悬而未决的问题(目前)

溶液

from celery import Celery
import time
app = Celery(
    'test_celery'
    ,broker= 'redis://localhost/0'
)
app.conf.update(
    CELERY_RESULT_BACKEND = 'redis://localhost/1'
)
@app.task
def add(x, y):
    time.sleep(2)
    return x + y
if __name__ == '__main__':
    result = add.delay(4, 4)
    print( result.get() )

按预期工作。

相关内容

  • 没有找到相关文章

最新更新