如何在Celery中向组中添加任务?

时间:2016-11-10 20:48:38

标签: python celery distributed-computing

我想在代码中逐步构建group Celery任务,因为我将基于循环中的逻辑创建任务。

例如:

my_group = group()
for item in items:
    if item.is_special():
        # This doesn't work...
        my_group.add(special_processing.s(item.id))
    else:
        my_group.add(regular_processing.s(item.id))

 res = my_group()

我已经读过这些群体是偏袒的,这很好,但你如何结合部分以便他们组成一个群体?

1 个答案:

答案 0 :(得分:2)

到目前为止,我发现的一种简单方法是创建一个任务列表,然后将其转换为一个组。

所以:

tasks = []
for item in items:
    if item.is_special():
        tasks.append(special_processing.s(item.id))
    else:
        tasks.append(regular_processing.s(item.id))
res = group(*tasks)

我还没有对此进行测试,但如果不起作用,我会更新此答案。