芹菜“链”任务在添

2024-05-20 13:17:18 发布

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

我的任务一次只能执行一次 我尝试了一些基于这个link和这个link的东西

@contextmanager
def redis_lock(task_name):
    lock = REDIS_CLIENT.lock("lock-{}".format(task_name))
    status = False
    try:
        status = lock.acquire(blocking)
        yield status
    finally:
        if status:
            lock.release()

但是,如果我只有2个进程,所有进程都会被阻塞,如果我有另一个任务,它也会等待。此外,我不确定这些任务是否会以相同的顺序执行。你知道吗

我已经尝试了很多其他的解决方案,但我所寻找的基本上是得到一个类型的最后一个任务,然后作为(不工作)的东西

def another_function(task_uuid):
    task = app.Task(task_uuid)
    task.link = my_task.s()

if __name__ == "__main__":
       task1 = my_task.delay()
       task_uuid = task1.id
       another_function(task_uuid)

所有任务都将按此顺序执行。 好像我在调用一个AsyncResultlink方法

谢谢你的帮助

编辑: 也许我可以按任务创建特殊队列,但我在文档中找不到方法来限制给定队列的进程数


Tags: 方法namelocktaskifuuid进程顺序