首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Django芹菜工作流链暂停/恢复

Django芹菜工作流链暂停/恢复
EN

Stack Overflow用户
提问于 2013-02-15 01:49:14
回答 1查看 1.4K关注 0票数 6

有没有办法暂停/恢复使用芹菜3.0中的链创建的正在运行的工作流?

基本上,我们的系统中有两种不同类型的任务:交互式任务和非交互式任务。非交互式的,我们有所有的参数,但交互的需要用户的输入。请注意,对于交互式任务,我们只能要求用户输入,因为它们的结果将影响交互任务(即在创建实际链之前不能要求用户输入)。

对如何处理这件事有什么建议吗?真是不知所措..。

当前的想法:

  • 创建两个任务子类(来自芹菜导入任务)。向InteractiveTask子类添加一个额外的实例(类成员)变量,默认设置为false,表示仍然需要某些用户输入。以某种方式访问任务实例,并将其从芹菜工作人员外部设置为true (尽管我已经查找了相当多的内容,并且似乎无法直接从另一个模块访问Task对象)
  • 将该链划分为由交互式作业分隔的多个链。有某种机制之外的芹菜工人检测,一旦一个链已经到达它的末端,并触发交互式任务的交互式客户端组件。一旦用户输入了所有这些数据,获取数据,并启动交互任务位于新链顶端的新链。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-03 13:23:07

我们已经在我们的项目中实现了类似于您的第二个想法&它运行得很好。以下是实现的要点。

向模型添加新字段status &重写保存方法。

models.py:

代码语言:javascript
复制
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)

tasks.py

代码语言:javascript
复制
@celery.task()
def non_interactive_task():
    #do something.

@celery.task()
def interactive_task():
    #do something.

functions.py

代码语言:javascript
复制
def custom_func(status):
    #Change status after non interactive task is completed.
    #Based on status, start interactive task.

status变量传递给模板,这对于显示用户输入信息的UI元素非常有用。当用户输入所需信息时,更改状态。这就调用了触发您的custom_funcinteractive_task

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14887222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档