芹菜任务
@app.task()
def single_task(delay):
"""Run task."""
if delay:
sleep(10)
print("ran ...")
return True
终端1
>>> from settings.celery import single_task
>>> single_task(True)
ran ...
>>>
终端2
>>> from settings.celery import single_task
>>> single_task(False)
ran ...
>>>
我正在使用django的芹菜任务我试图实现在队列上运行任务,所以当在第一个终端我运行它将延迟10秒和当我调用第二个终端时,它将立即等待第一个终端完成,即10秒
但是,现在当我调用第一个终端需要10秒当我在10秒前打到第二终端时它不是等待首先完成,我期待它等待10秒,直到第一个任务作为第二个任务完成,没有延迟
。查找先进先出
我真的不确定fifo是否是你所追求的。您可以在代理中指定一个fifo队列,并且只有一个工作者,这隐式地保证在第二个任务开始之前完成第一个任务。然而,先进先出并不等同于保证第一个任务在第二个任务之前完成。这似乎也有点违反直觉的消息传递基础设施要实现什么。
然而,如果你需要这个功能,因为你的任务相互依赖,你可能想要查看工作流,特别是链。