Skip to main content
 首页 » 编程设计

python之如果上一个任务成功, celery 运行任务

2025年05月04日7落叶无声

我需要运行四个任务,但只有在它们成功时才需要一个接一个地运行。

我试过像这样链接它们..但它们是独立开始的

res = (mul.si(5,5) | mul.si(5,6) | mul.si(5,7) | mul.si(5,8) | mul.si(5,9) )() 

有什么想法吗?

请您参考如下方法:

是的,你可以做到。但是您需要按照 here 所述存储结果.

但这很少被使用,因为它将异步调用变成了同步调用

在我的例子中,

tasks.py 就像

from celery import Celery 
import datetime 
 
app = Celery('tasks',backend='amqp' broker='amqp://guest@localhost//') 
 
@app.task 
def add(x, y): 
    return x + y 
 
 
def add_chained(args_list=list()): 
    for args in args_list: 
        print "Performing addtion for %s at %s" % (args, datetime.datetime.now()) 
        result = add.delay(*args) 
        while not result.ready(): 
            pass 

结果是这样的:

>>> import tasks 
>>> tasks.add_chained([(1,2), (2,3), (3,4), (4,5)]) 
Performing addtion for (1, 2) at 2014-01-17 18:49:57.392357 
Performing addtion for (2, 3) at 2014-01-17 18:49:57.428961 
Performing addtion for (3, 4) at 2014-01-17 18:49:57.432598 
Performing addtion for (4, 5) at 2014-01-17 18:49:57.435891