1

是不是ResultSetcelery.group 使用了错误的方法得到add了结果?

我使用的 celery 版本是 3.0.24

要点

# primary celery module
celery = Celery(...)


# task module
from celery import current_app
@current_app.task(max_retries=5)
def get_page(url):
    # do stuff to "get page"
    return page


# program
from celery import group

url = "http://someurl"

if not groupresult:
    groupresult = group([get_page.s(url)]).apply_async()
else:
    async = get_page.delay(url)
    groupresult.add(async)

以及这产生的回溯......

File "/lib/python2.7/site-packages/celery/result.py", line 308, in add
    self.results.append(result)
AttributeError: 'tuple' object has no attribute 'append'

这个hastebin底部有相关的celery源码


编辑 0

一些附加信息,以防万一:

我实际上是在其他地方开始我的 celery worker,使用-P eventlet一个 redis 代理和一个 redis 后端。我已经成功使用此配置一段时间了。

此外,将上面的要点更新为更具体,使用current_app.


编辑 1

问题出在celery/app/builtins.py,就在这里。在将它传递给它之前,我必须强制results成为一个列表而不是一个元组才能让它GroupResult工作。

芹菜:分组任务

4

0 回答 0