Celery:我可以使用 Celery 一次执行一个函数实例吗?
Celery: Can I execute one instance of a function at a time using Celery?
所以我有一个程序,例如运行函数: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 文档的 "Task Cookbook" 部分的 Ensuring a task is only executed one at a time 部分中进行了解释。
所以我有一个程序,例如运行函数: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 文档的 "Task Cookbook" 部分的 Ensuring a task is only executed one at a time 部分中进行了解释。