芹菜“连锁”任务及时

时间:2017-04-13 14:50:05

标签: python celery

我有一项任务只能执行一次 我尝试了基于此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)

所有任务都将按此顺序执行。 好像我正在调用link

AsyncResult方法

感谢您的帮助

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

0 个答案:

没有答案