从组中的子任务获取结果

2024-04-25 08:15:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我对芹菜很陌生,有些概念我还不太清楚。我正在尝试求解another problem,到目前为止,我得到了一段更小的可运行代码,它所做的事情与我试图实现的类似。现在我不明白执行下面的链是否有可能得到最终的结果,它应该是一个数组,比如:

["[MARY]", "[HAD]", "[A]", "[LITTLE]", "[LAMB]"](以任何顺序)

谢谢

import celery
from celery import subtask

app = celery.Celery('celtest', backend='redis://localhost', broker='pyamqp://guest@localhost')

@app.task
def taskThatReturnsArray():
    return ["Mary", "Had", "A", "Little", "Lamb"]

@app.task
def taskThatAddsBrackets(string):
    return "[%s]" % string

@app.task
    def taskThatProcessesItems(item):
        chain = celery.chain(
            taskThatUppercasesString.s(item),
            taskThatAddsBrackets.s()
        )
        return chain()

@app.task
def taskThatUppercasesString(string):
    return string.upper()

@app.task
def dmap(it, callback):
    callback = subtask(callback)
    return celery.group(callback.clone([arg,]) for arg in it)()

if __name__ == '__main__':
    chain = celery.chain(
        taskThatReturnsArray.s(),
        dmap.s(taskThatProcessesItems.s())
    )
    res = chain()

Tags: importapplocalhostchaintaskstringreturndef