基于aws swf服务构建的python工作流库

pyflow-swf的Python项目详细描述


#pyflow

一个基于aws[简单工作流服务][swf]的python工作流框架。

[swf]:https://aws.amazon.com/documentation/swf/

过程python
代码。它是使用[swf]实现的。工作流组件可以被实现为AWSλ函数,或者在Python、Ruby或Java中实现的活动函数:BRU/Java,它运行在任何能与SWF连接的BR/>的计算资源上。
< BR> > Pyflow深受AWS[ Java的流框架] [Java流]
和[FL ]的启发。"Ruby流"框架,但不尝试与这些框架兼容。
BR/> [JavaFLU]:http://DOCS.Amaz.com/Amazon SWF/Nave/AssFuffTeave/Relay.html:BR/> [Ruby Fuff]:http://DOCS.Amazon .com /Amazon SWF/Nealth/AWSRBBFuthGuogy/
BR/>程序ing model

本页很好地概述了pyflow
应用程序中使用的概念:[aws flow framework basic concepts][]。关于[javaFLU][]是
,但对于PyFoad的概念是相同的。该页上的
图表没有提到lambda函数,但是如果将它们添加到图表中,lambda服务将是另一个
活动工作器,lambda函数是活动方法。

[aws流框架基本概念]:http://docs.aws.amazon.com/amazonswf/latest/awsflowguide/awsflow basics application structure.html



\myworkflow(pyflow.workflow):
name='myworkflow'
version='1.0'

some_func=pyflow.lambdadescriptor('some_lambda_func')
other_func=pyflow.lambdadescriptor('other_lambda_func')

def run(self,input_arg):
if input_arg='bad_input':
提高pyflow.workflowfailedexception('bad_input','received bad input')


future1=self.some_func(input_arg)



return future2.result(
```

`run`方法的"input_arg"参数是一个任意值
,调用工作流时可以将其传递给工作流。工作流
实例有一个"swf"属性,即
a[workflow invocation helper](./pyflow/workflow_invocation_helper.py)
对象,该对象提供调用远程任务的接口,并
检索有关工作流执行上下文的信息。

调用lambda函数。首先为要调用的每个lambda函数定义一个类属性,然后像在"run"方法中使用方法一样使用它。有类似的描述符类用于调用swf活动和其他swf工作流。这些方法是异步的。它们立即返回一个
"future"对象,该对象可用于在调用完成时检索
调用的结果。在将来调用"result()"方法,直到结果就绪。如果调用成功,则返回其
结果。如果调用失败,"result"方法将引发"invocationexception"。

我将在本文档的后面部分解释上下文切换是如何实现的,以及在工作流实现过程中需要遵循的一些规则。


` workflowfailedexception`有两个参数。第一个是短的"原因"字符串,第二个是长的"细节"字符串。




首先需要启动一个工作流工作进程,它将管理一个或多个工作流定义的执行,然后需要告诉swf调用工作流。下面是如何使用swf创建工作流工作进程的方法。

`` python
domain='swfsampledomain'
task\u list='my workflow tasklist'



将无限期地轮询事件
pyflow.poll\u是否执行([myworkflow],domain=domain,task\u list=task\u list,
identity='my workflow worker')
```

>执行上述操作将首先确保工作流类型是在swf中注册的,然后进入一个无休止的循环,等待从swf服务接收
事件并执行工作流实例。

`轮询执行情况,使其在返回前仅执行"最长时间"秒
。工作流运行器是无状态的;工作流实例的执行状态由swf服务维护。这意味着
可以让"poll_for_executions"处理多个事件,
然后退出python进程,并使用相同的
参数重新启动它,并让它在停止执行的地方拾取工作流执行。

要实际启动工作流实例,可以运行如下代码:

`` python
域='swfsampledomain'
任务列表='my workflow task list'
工作流名称='myworkflow'
工作流版本='1.0'
lambda角色='arn:aws:iam::528461152743:role/swf lambda'

工作流id=pyflow.启动工作流(
域=域,
工作流ame=工作流名称,
工作流版本=工作流版本,
任务列表=任务列表,
lambda_role=lambda_role,
输入='"hello")


打印"以工作流id{}开始的工作流"。格式(工作流id)
````

OW执行--域swfsampledomain \
--工作流ID我的唯一工作流ID \
--工作流类型名称=我的工作流,版本=1.0 \
--任务列表名称=字符串转换器决策者\
--lambda角色arn:aws:iam::528461152743:role/swf lambda \
--输入"hello"
```

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
JAVA web服务从Android Ksoap接收空参数   java在Try/Catch(单元测试)中捕获ClassCastException   java从文件反序列化多个对象而不使用while(true)   JavaSpringDataGemFire:自定义过期示例   java我可以将字符串转换为变量吗?   java找不到任何METAINF/持久性。类路径中的xml文件   java为什么lucene 4.0删除IndexWriter类的两个构造函数?   数据库生物特征指纹   java LogManager忽略已启用的断言   java如何在运行时使用JAXB注释   java将16位pcm转换为8位   如何绘制Java 3D切片形状或切割件   Java/Android:无法启动活动组件信息{…}:JAVAlang.NullPointerException   java为什么html内容不能匹配一个相当简单的正则表达式?   java如何检查服务器端修改的表单字段   java组织。openqa。硒。遥远的与远程浏览器通信时发生UnreachableBrowserException错误   java中svd的文本挖掘问题   javaspringboot:deploy。jar作为init。d服务收到404错误   箭头键的java代码   java异常致命异常:无法在actionBar行上启动activity ComponentInfo。setCustomView(R.layout.actionbar\u custom\u view\u home);