Ant*_*n K 6 celery django-celery
有没有办法暂停/恢复使用celery 3.0链创建的正在运行的工作流程?
基本上,我们的系统中有两种不同类型的任务:交互式和非交互式任务.非交互式的,我们有所有参数,但交互式的需要用户输入.请注意,对于交互式任务,我们只能在链中的所有先前的tak完成后询问用户输入,因为它们的结果将影响交互式任务(即,在创建实际链之前我们不能要求用户输入).
关于如何处理此问题的任何建议?真的在这里亏本..
目前的想法:
我们已经在我们的项目中实现了类似于您的第二个想法的东西,并且效果很好。这是实施的要点。
将新字段添加status到您的模型并覆盖保存方法。
模型.py:
class My_Model(models.Model):
# some fields
status = models.IntegerField(default=0)
def save(self, *args, **kwargs):
super(My_Model, self).save(*args, **kwargs)
from .functions import custom_func
custom_func(self.status)
Run Code Online (Sandbox Code Playgroud)
任务.py
@celery.task()
def non_interactive_task():
#do something.
@celery.task()
def interactive_task():
#do something.
Run Code Online (Sandbox Code Playgroud)
函数.py
def custom_func(status):
#Change status after non interactive task is completed.
#Based on status, start interactive task.
Run Code Online (Sandbox Code Playgroud)
将status变量传递给模板,这对于显示 UI 元素以供用户输入信息非常有用。当用户输入所需信息时,更改状态。这将触发custom_func您的调用interactive_task。