所以我有一个程序,例如运行函数:x,y,z。假设函数的执行时间为:
x -> 5 seconds
y -> 15 minutes
z -> 2 minutes
所以,我面临一个问题,当y被执行时,我为y得到另一个任务,它也开始再次执行y。所以我会同时执行2个y。
我想实现什么?Y一次只执行一次。一旦第一个Y执行完成,第二个Y就可以开始执行。
我试着寻找解决方案,我发现的是可以让我们一次执行一个任务(x/y/z(的文档。然而,我希望所有任务都能正常执行,就在我们获得2个y实例时,我们需要第二个实例等待第一个实例完成执行。
因此,我们需要队列看起来像:(工作(
X
Y -> Y
Z
我找到的解决方案会让它看起来像:
X-> Y-> Z -> Y, which is only one task at a time, doesn't matter which function.
这不是我想要的。
如果问题不清楚,请告诉我。
谢谢。
是的,它是可行的,并在Celery文档的"任务食谱"部分的"确保任务一次只执行一个"部分中进行了解释。