是不是ResultSet
celery.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
工作。
芹菜:分组任务