2019独角兽企业重金招聘Python工程师标准>>>

这里只对其做简单笔记,group,chord等内容直接看文档

subtask实际上是一个signature,可以到处传递

一种raw的用法是:

>>> from celery import signature

>>> signature('tasks.add', args=(2, 2), countdown=10)

tasks.add(2, 2)

正式用法:

>>> add.subtask((2, 2), countdown=10)

tasks.add(2, 2)

简便用法:

>>> add.s(2, 2)

tasks.add(2, 2)

>>> add.s(2, 2, debug=True)

tasks.add(2, 2, debug=True)

更多例子:

>>> s = add.subtask((2, 2), {'debug': True}, countdown=10)

>>> s.args

(2, 2)

>>> s.kwargs

{'debug': True}

>>> s.options

{'countdown': 10}

>>> add.apply_async(args, kwargs, **options)

>>> add.subtask(args, kwargs, **options).apply_async()

>>> add.apply_async((2, 2), countdown=1)

>>> add.subtask((2, 2), countdown=1).apply_async()

这种情况将会直接在本地执行:

>>> add(2, 2)

4

>>> add.s(2, 2)()

4

当你用s()时,你不能定义option,只能借助set

>>> add.s(2, 2).set(countdown=1)

proj.tasks.add(2, 2)

很多情况下,参数可以分开提供(这是一个很重要的特性!!!):

>>> partial = add.s(2)          # incomplete signature

>>> partial.delay(4)            # 2 + 4

>>> partial.apply_async((4, ))  # same

>>> s = add.s(2, 2)

>>> s.delay(debug=True)                    # -> add(2, 2, debug=True)

>>> s.apply_async(kwargs={'debug': True})  # same

这种情况下会覆盖原来subtask定义的option:

>>> s = add.subtask((2, 2), countdown=10)

>>> s.apply_async(countdown=1)  # countdown is now 1

你可以通过clone现有的一个带不完全参数subtask去派生新的subtask

>>> s = add.s(2)

proj.tasks.add(2)

>>> s.clone(args=(4, ), kwargs={'debug': True})

proj.tasks.add(2, 4, debug=True)

但是这种情况下是这样的:

>>> c = add.s(32140,32492)

>>> c()

64632

>>> c

proj.agent.add(32140, 32492)

>>> k = c.clone(args=(24,434))

>>> k

proj.agent.add(24, 434, 32140, 32492)        #调用会产生错误

>>>

通过immutable参数设置使result不可变

>>> add.apply_async((2, 2), link=reset_buffers.subtask(immutable=True))

>>> add.apply_async((2, 2), link=reset_buffers.si())

这里有个例子;

>>> res = (add.si(2,5) | add.si(12,1) | add.si(2,2))()         #在这种情况下,chain只起到把task combine在一起的功能,每个si()都要提供完整参数,否则会出错
>>> res.get()
4
>>> res = (add.si(2,5) | add.si(12,1) | add.si(2,2)).delay()
>>> res.get()
4
>>> res.parent.get()                                           #可以检查chain中各部分的result
13
>>> res.parent.parent.get()
7

link设置的是callback

link的用法如下:

add.apply_async((2, 2), link=other_task.s())

使用link也可以使用分开提供的参数:

>>> add.apply_async((2, 2), link=add.s(8))

相当于(2+2)+8

转载于:https://my.oschina.net/hochikong/blog/406487

#sora#笔记——工作流相关推荐

  1. 对工具的探索 - 对工具、工作流、自动化的杂思

    对电脑中各种软件工具进行探索的欲望时不时会充斥着大脑,让我将手头的工作推开,就某个领域的工具进行研究. 比如我曾经花费很多时间探索笔记类工具,妄图打造自己的笔记工作流,主要原因是我记不住那么多东西,又 ...

  2. Zotero6.0时代来临!新的文献阅读生态

    zotero迎来6.0正式版的更新,内置PDF阅读器与笔记编辑器极大重构了我的文献阅读生态,本文记载了基于6.0版本的zotero配置过程. 本文相干的软件与插件如下: 相关软件 Zotero Sum ...

  3. 学习笔记之-Activiti7工作流引擎,概述,环境搭建,类关系图,使用Activiti BPMN visualizer,流程变量,组任务 网关,Activiti整合Spring SpringBoot

    本篇学习笔记是观看黑马程序员Activiti7视频而得 Activiti7 一.工作流介绍 1.1 概念 工作流(Workflow),就是通过计算机对业务流程自动化执行管理.它主要解决的是" ...

  4. Dynamic CRM 2013学习笔记(四十二)流程5 - 实时/同步工作流(Workflow)用法图解...

    实时工作流跟插件一样,也是用事件执行管道来执行,能在pre,post或核心操作中执行.跟插件一样,不能在创建之前和删除之后执行.如果执行过程中有异常发生,会取消并回滚整个操作.实时工作流里所有的活动和 ...

  5. Git笔记(14) 分支开发工作流

    Git笔记(14) 分支开发工作流 1. 长期分支 2. 特性分支 1. 长期分支 因为 Git 使用简单的三方合并 所以就算在一段较长的时间内,也可反复把一个分支合并入另一个分支 也就是说,在整个项 ...

  6. Activiti工作流学习笔记01

    Activiti6工作流学习笔记01 activiti工作流目前官方最新版本是7.x,但....版本不重要了.这篇笔记只是我学习activiti6过程中的自我总结.如果笔记上有错误的话,欢迎赐教,谢谢 ...

  7. 工作流Activiti5.13学习笔记(一)

    工作流Activiti5.13学习笔记(一) 了解工作流 1.工作流(Workflow),就是"业务过程的部分或整体在计算机应用环境下的自动化",它主要解决的是"使在多个 ...

  8. Windows Workflow HOL学习笔记(十二):创建状态基工作流

    W indows Workflow HOL学习笔记(十二):创建状态基工作流 本文内容来自Microsoft Hands-on Labs for Windows Workflow Foundation ...

  9. Git工作流学习笔记

    Git工作流指南 分布式版本控制系统 观看笔记:https://www.bilibili.com/video/BV1dW411U7ER?p=1 老师笔记: http://www.funtl.com/z ...

最新文章

  1. 遗传和基因突变对神经网络训练的好处
  2. javascript宿主对象之window.history
  3. 9月22日培训日记(上)
  4. 云炬随笔20180607
  5. ExtJs 滚动条问题
  6. Linux常用命令之wget
  7. [KMP]一本通(http://ybt.ssoier.cn:8088) 1698:字符串匹配
  8. Xcode中StaticLibrary和Framework的共同点和区别
  9. Log4j.properties的简单配置
  10. SpringCache 集成 Redis,这才是优雅的缓存解决方案!
  11. 《暖冬里的事儿 ——春假散札》
  12. 风控算法知识——浅谈信息熵与IV值应用介绍
  13. matlab2c使用c++实现matlab函数系列教程-median函数
  14. LINUX中文件的移动,Linux中文件移动文件的操作命令为 ()
  15. qt 当前窗口句柄_QT获取窗口句柄
  16. 卡方检验详解分析与实例
  17. 功能最强大的编辑器——vi
  18. 敏捷互联网项目测试质量报告的大纲
  19. crossover程序错误_如何使用Crossover在Linux上安装Windows应用程序
  20. python输入什么就输出什么意思_python中的输入与输出是什么?(实例详解)

热门文章

  1. 【水】Dev-c++黑暗模式教程
  2. [TomTom]安卓汉化版v1.3,中国及海外地图懒人包
  3. 培训机构炒出来的Unity就业没问题吗
  4. 解决:Connections could not be acquired from the underlying database!
  5. 抹不掉的消费数字足迹!那些悄然消失的花呗额度……
  6. 孙悟空的师傅是谁(zz)
  7. 【转】Actionscript,AS3,MXML,Flex,Flex Builder,Flash Builder,Flash,AIR,Flash Player之关系
  8. NFT老炮CryptoPunks解析与实现
  9. 『HTMLCSS』第一个网页
  10. news_flash新闻快讯项目 Chapter 1