Patterns¶
- class taskflow.flow.Flow(name, retry=None)[source]¶
基类:
object所有流程实现的基础抽象类。
流程是一种定义任务之间关系的数据结构。您可以将任务和其他流程(作为子流程)添加到流程中,并且流程提供了一种隐式或显式地定义它们如何相互依赖的方式。关系的具体结构由具体实现定义,而此类定义了公共接口并添加了人类可读的(不一定唯一)名称。
注意(harlowja):如果一个流程被放置在另一个流程中作为子流程,这是组合流程的一种期望方式,那么在编译期间,子流程和父流程可能会被扁平化为一个新的流程。
- property name¶
此流程的非唯一名称(人类可读)。
- property retry¶
相关的流程重试控制器。
此重试控制器对象将影响和控制在执行过程中发生故障时,此流程及其包含的组件如何(以及是否)重试。
- abstract iter_links()[source]¶
迭代流程子节点之间的依赖关系链接。
- 迭代 3 元组
(A, B, meta),其中 A是链接开始的子节点(原子或子流程);B是链接指向的子节点(原子或子流程);可以说B依赖于A或B需要A;meta是链接元数据,一个字典。
- 迭代 3 元组
- property provides¶
流程提供的符号名称集合。
- abstract property requires¶
流程所需的未满足符号名称集合。
线性流程¶
无序流程¶
- class taskflow.patterns.unordered_flow.Flow(name, retry=None)[source]¶
基类:
Flow无序流程模式。
一个无序(可能嵌套)的任务/流程流程,可以作为单个单元以任何顺序执行并回滚。
- iter_links()[source]¶
迭代流程子节点之间的依赖关系链接。
- 迭代 3 元组
(A, B, meta),其中 A是链接开始的子节点(原子或子流程);B是链接指向的子节点(原子或子流程);可以说B依赖于A或B需要A;meta是链接元数据,一个字典。
- 迭代 3 元组
- property requires¶
流程所需的未满足符号名称集合。
图流程¶
- class taskflow.patterns.graph_flow.Flow(name, retry=None)[source]¶
基类:
Flow图流程模式。
包含的流程/任务将根据它们的依赖关系执行,这些依赖关系将通过使用流程/任务提供的和要求的映射或通过手动创建的依赖关系链接来解析。
根据依赖关系,将构建一个有向图。如果存在边
A -> B,这意味着B依赖于A(并且B的执行必须等待A完成执行,在回滚时,这意味着A的回滚必须等待B完成回滚)。注意:不允许循环依赖关系。
- link(u, v, decider=None, decider_depth=None)[source]¶
将现有的节点 u 作为现有节点 v 的运行时依赖项进行链接。
请注意,如果添加这些边创建了循环图,则会引发
DependencyFailure异常,并且提供的更改将被丢弃。如果正在请求链接的节点不存在于此图中,则会引发ValueError异常。- 参数:
u – 要创建链接的源任务或流程(必须已经存在)
v – 要创建链接的目标任务或流程(必须已经存在)
decider – 一个回调函数,它将在运行时决定是否允许执行
v(或者是否应该忽略v的执行,因此不执行)。它预计将以单个关键字参数history接收,该参数将是所有u可决定的链接的执行结果,这些链接以v为目标。它预计将返回一个布尔值(True以允许v执行,或False以不执行)。decider_depth –
Depth枚举(或其字符串版本)之一,它将用于影响当提供的决定的结果为 false 时,将忽略哪些原子。如果未提供(并且提供了一个有效的决定者,则默认值为ALL)。
- add(*nodes, **kwargs)[source]¶
将给定的任务/任务/流程/流程添加到此流程。
请注意,如果添加这些节点(以及任何边)创建了循环图,则会引发
DependencyFailure异常,并且应用的更改将被丢弃。- 参数:
nodes – 要添加到流程的节点
kwargs –
关键字参数,当前处理的两个关键字参数是
resolve_requires一个布尔值,当为 true(默认值)时,意味着当添加节点时,它们的符号要求将与现有的节点匹配,并且将自动创建链接到这些提供者。如果存在多个可能的提供者,则会引发AmbiguousDependency异常,并且提供的添加将被丢弃。resolve_existing,一个布尔值,当为 true(默认值)时,表示在添加新节点时,将扫描现有节点的需求,以查找此新添加的节点可以提供的符号。如果找到匹配项,则会自动从新添加的节点到需求方创建链接。
- iter_links()[source]¶
迭代流程子节点之间的依赖关系链接。
- 迭代 3 元组
(A, B, meta),其中 A是链接开始的子节点(原子或子流程);B是链接指向的子节点(原子或子流程);可以说B依赖于A或B需要A;meta是链接元数据,一个字典。
- 迭代 3 元组
- property requires¶
流程所需的未满足符号名称集合。
- class taskflow.patterns.graph_flow.TargetedFlow(*args, **kwargs)[source]¶
基类:
Flow具有目标的图流。
添加了执行流直到某个图节点(任务或子流)的可能性。
- add(*nodes, **kwargs)¶
将给定的任务/任务/流程/流程添加到此流程。
请注意,如果添加这些节点(以及任何边)创建了循环图,则会引发
DependencyFailure异常,并且应用的更改将被丢弃。- 参数:
nodes – 要添加到流程的节点
kwargs –
关键字参数,当前处理的两个关键字参数是
resolve_requires一个布尔值,当为 true(默认值)时,意味着当添加节点时,它们的符号要求将与现有的节点匹配,并且将自动创建链接到这些提供者。如果存在多个可能的提供者,则会引发AmbiguousDependency异常,并且提供的添加将被丢弃。resolve_existing,一个布尔值,当为 true(默认值)时,表示在添加新节点时,将扫描现有节点的需求,以查找此新添加的节点可以提供的符号。如果找到匹配项,则会自动从新添加的节点到需求方创建链接。
- link(u, v, decider=None, decider_depth=None)¶
将现有的节点 u 作为现有节点 v 的运行时依赖项进行链接。
请注意,如果添加这些边创建了循环图,则会引发
DependencyFailure异常,并且提供的更改将被丢弃。如果正在请求链接的节点不存在于此图中,则会引发ValueError异常。- 参数:
u – 要创建链接的源任务或流程(必须已经存在)
v – 要创建链接的目标任务或流程(必须已经存在)
decider – 一个回调函数,它将在运行时决定是否允许执行
v(或者是否应该忽略v的执行,因此不执行)。它预计将以单个关键字参数history接收,该参数将是所有u可决定的链接的执行结果,这些链接以v为目标。它预计将返回一个布尔值(True以允许v执行,或False以不执行)。decider_depth –
Depth枚举(或其字符串版本)之一,它将用于影响当提供的决定的结果为 false 时,将忽略哪些原子。如果未提供(并且提供了一个有效的决定者,则默认值为ALL)。
- class taskflow.deciders.Depth(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)[source]¶
基类:
StrEnum决策器影响范围的枚举。
- ALL = 'ALL'¶
默认决策器深度,影响所有后续原子(包括位于后续嵌套流中的原子)。
- FLOW = 'FLOW'¶
决策器深度,影响相同流中的所有后续任务(它不会影响后续嵌套流中的任务/重试)。
警告
在使用这种类型时,允许执行已被忽略的事物的后续操作(例如嵌套流及其包含的任务),这可能会导致运行时符号查找错误,用户请注意。
- NEIGHBORS = 'NEIGHBORS'¶
决策器深度,仅影响下一个后续任务(并且不会遍历一个级别的后续任务)。
警告
在使用这种类型时,允许执行已被忽略的事物的后续操作(例如嵌套流及其包含的任务),这可能会导致运行时符号查找错误,用户请注意。
- ATOM = 'ATOM'¶
决策器深度,仅影响目标原子(并且不会遍历到任何级别的后续原子)。
警告
在使用这种类型时,允许执行已被忽略的事物的后续操作(例如嵌套流及其包含的任务),这可能会导致运行时符号查找错误,用户请注意。
层级¶
