#sora#笔记——工作流
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#笔记——工作流相关推荐
- 对工具的探索 - 对工具、工作流、自动化的杂思
对电脑中各种软件工具进行探索的欲望时不时会充斥着大脑,让我将手头的工作推开,就某个领域的工具进行研究. 比如我曾经花费很多时间探索笔记类工具,妄图打造自己的笔记工作流,主要原因是我记不住那么多东西,又 ...
- Zotero6.0时代来临!新的文献阅读生态
zotero迎来6.0正式版的更新,内置PDF阅读器与笔记编辑器极大重构了我的文献阅读生态,本文记载了基于6.0版本的zotero配置过程. 本文相干的软件与插件如下: 相关软件 Zotero Sum ...
- 学习笔记之-Activiti7工作流引擎,概述,环境搭建,类关系图,使用Activiti BPMN visualizer,流程变量,组任务 网关,Activiti整合Spring SpringBoot
本篇学习笔记是观看黑马程序员Activiti7视频而得 Activiti7 一.工作流介绍 1.1 概念 工作流(Workflow),就是通过计算机对业务流程自动化执行管理.它主要解决的是" ...
- Dynamic CRM 2013学习笔记(四十二)流程5 - 实时/同步工作流(Workflow)用法图解...
实时工作流跟插件一样,也是用事件执行管道来执行,能在pre,post或核心操作中执行.跟插件一样,不能在创建之前和删除之后执行.如果执行过程中有异常发生,会取消并回滚整个操作.实时工作流里所有的活动和 ...
- Git笔记(14) 分支开发工作流
Git笔记(14) 分支开发工作流 1. 长期分支 2. 特性分支 1. 长期分支 因为 Git 使用简单的三方合并 所以就算在一段较长的时间内,也可反复把一个分支合并入另一个分支 也就是说,在整个项 ...
- Activiti工作流学习笔记01
Activiti6工作流学习笔记01 activiti工作流目前官方最新版本是7.x,但....版本不重要了.这篇笔记只是我学习activiti6过程中的自我总结.如果笔记上有错误的话,欢迎赐教,谢谢 ...
- 工作流Activiti5.13学习笔记(一)
工作流Activiti5.13学习笔记(一) 了解工作流 1.工作流(Workflow),就是"业务过程的部分或整体在计算机应用环境下的自动化",它主要解决的是"使在多个 ...
- Windows Workflow HOL学习笔记(十二):创建状态基工作流
W indows Workflow HOL学习笔记(十二):创建状态基工作流 本文内容来自Microsoft Hands-on Labs for Windows Workflow Foundation ...
- Git工作流学习笔记
Git工作流指南 分布式版本控制系统 观看笔记:https://www.bilibili.com/video/BV1dW411U7ER?p=1 老师笔记: http://www.funtl.com/z ...
最新文章
- 遗传和基因突变对神经网络训练的好处
- javascript宿主对象之window.history
- 9月22日培训日记(上)
- 云炬随笔20180607
- ExtJs 滚动条问题
- Linux常用命令之wget
- [KMP]一本通(http://ybt.ssoier.cn:8088) 1698:字符串匹配
- Xcode中StaticLibrary和Framework的共同点和区别
- Log4j.properties的简单配置
- SpringCache 集成 Redis,这才是优雅的缓存解决方案!
- 《暖冬里的事儿 ——春假散札》
- 风控算法知识——浅谈信息熵与IV值应用介绍
- matlab2c使用c++实现matlab函数系列教程-median函数
- LINUX中文件的移动,Linux中文件移动文件的操作命令为 ()
- qt 当前窗口句柄_QT获取窗口句柄
- 卡方检验详解分析与实例
- 功能最强大的编辑器——vi
- 敏捷互联网项目测试质量报告的大纲
- crossover程序错误_如何使用Crossover在Linux上安装Windows应用程序
- python输入什么就输出什么意思_python中的输入与输出是什么?(实例详解)
热门文章
- 【水】Dev-c++黑暗模式教程
- [TomTom]安卓汉化版v1.3,中国及海外地图懒人包
- 培训机构炒出来的Unity就业没问题吗
- 解决:Connections could not be acquired from the underlying database!
- 抹不掉的消费数字足迹!那些悄然消失的花呗额度……
- 孙悟空的师傅是谁(zz)
- 【转】Actionscript,AS3,MXML,Flex,Flex Builder,Flash Builder,Flash,AIR,Flash Player之关系
- NFT老炮CryptoPunks解析与实现
- 『HTMLCSS』第一个网页
- news_flash新闻快讯项目 Chapter 1