aws swf的轻量级python框架

caravan的Python项目详细描述


aws swf的轻量级python框架

关于本项目

商队正在Ludia进行项目 如营销活动系统和按需分布式处理 系统(多亏了数百个lambda函数)。

反馈意见、想法和贡献受到高度欢迎。(打开一个 Github issue)。

本项目的重点

类似的项目存在(像Simpleflow那样成熟)。 这里是车队与现有项目不同的地方:

  • 支持aws lambda任务
  • BOTO3
  • 亲吻
  • 带上您自己的工作流框架(标准实现为contribs)
  • 决策器代码和活动代码之间没有耦合
  • 粘贴兼容配置文件

功能

  • 决策员
  • 活动任务工作线程TODO
  • 用于启动/通知/终止任意工作流执行的命令
  • 命令列出打开的工作流执行
  • 注册域/列出域的命令

配置

商队使用BOTO3连接到AWS。见 Boto 3 configuration guide 完整的文档。

警告

在aws ec2上,元数据提供程序只提供凭据 必须由配置提供。

环境变量

AWS_ACCESS_KEY_ID
AWS帐户的访问密钥。
AWS_SECRET_ACCESS_KEY
AWS帐户的密钥。
AWS_DEFAULT_REGION
要使用的默认区域,例如us-east-1
AWS_PROFILE
要使用的默认凭据和配置配置文件(如果有的话)。

配置文件

凭据文件位于~/.aws/credentials

[default]
# The access key for your AWS account
aws_access_key_id=<YOUR ACCESS KEY ID>

# The secret key for your AWS account
aws_secret_access_key=<YOUR SECRET KEY>

设置文件位于~/.aws/config

[default]
# The default region when making requests
region=<REGION NAME>

它还支持配置文件:

[profile dev-profile]
# The default region when using the dev-profile account
region=<REGION NAME>

演示

设置SWF域以运行此示例:

$ caravan-domain-register -n CaravanDemo --retention-days 1

编写工作流类型(请参见完整的demo

fromcaravanimportWorkflowclassDemo(Workflow):"""Noop workflow using the bare caravan API."""name='Demo'version='0.1'default_execution_start_to_close_timeout='600'default_task_start_to_close_timeout='10'defrun(self):self.task.print_events()self.task.add_decision('CompleteWorkflowExecution')

使用演示工作流运行决策器:

$ caravan-decider -d CaravanDemo -m caravan.examples.demo -t default --verbose

开始执行演示工作流:

$ caravan-start -d CaravanDemo -n Demo -v 0.1 -i 1

(The Demo workflow will wait for 5 minutes)

列出执行情况:

$ caravan-list -d CaravanDemo
$ caravan-list -d CaravanDemo --oldest 2015-01-01

向执行程序发送信号:

$ caravan-signal -d CaravanDemo -i 1 -s PRINT --input 'Hello World!'
$ caravan-signal -d CaravanDemo -i 1 -s PRINT --input 'Lorem ipsum'
$ caravan-signal -d CaravanDemo -i 1 -s STOP

终止执行:

$ caravan-terminate -d CaravanDemo -i 1

开发

可能使用virtualenvwrapper 管理你的虚拟机。

$ mkvirtualenv caravan

or

$ virtualenv caravan

克隆并安装开发依赖项:

(caravan)$ git clone git@github.com:pior/caravan.git
(caravan)$ cd caravan
(caravan)$ pip install -e .[dev]

运行测试:

(caravan)$ nosetests

释放

发布过程使用zest.releaser:

$ fullrelease

许可证

麻省理工学院许可。看捆绑的 LICENSE 有关详细信息,请存档

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

推荐PyPI第三方库


热门话题
如何使用Java中的扫描仪读取文本文件中的特定字符?   java如果我们在hibernate中开始事务但不提交它,会发生什么?   Azure CosmosDB Java Springboot中的无服务器帐户不支持spring boot设置提供吞吐量或容器自动导航   附加到新对象的Java注释?   java如何将自定义文本视图添加到。在Kotlin中添加通知操作   java Shibboleth添加_OpenSAMLcookies,导致HTTP头大小>8k   分布式传感器数据(~40Hz)的高效Java观测器设计   java如何在while循环外声明数组,但在while循环中初始化它?   用@XmlElementRef注释的java元素没有显示在JAXB编组字符串中?   java替换二维数组的值   java如何在任务栏上创建Windows7加载栏   java如何在组件注释bean中使用会话或RequestScope bean?   java netbeans freermarker插件错误:在实现版本中请求netbeans桥的插件Lexer   java谷歌地图方向。加载失败,返回服务器错误   java当我试图递归地计算两个值之间的整数之和时,为什么结果返回一个奇怪的值?   java如何通过html文件的用户获取运行时输入,以使用Jsoup进行解析?