aws swf的轻量级python框架
caravan的Python项目详细描述
aws swf的轻量级python框架
关于本项目
商队正在Ludia进行项目 如营销活动系统和按需分布式处理 系统(多亏了数百个lambda函数)。
反馈意见、想法和贡献受到高度欢迎。(打开一个 Github issue)。
- Code on Github
- PyPi
- Tests
- 文件:TODO
本项目的重点
类似的项目存在(像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
类似项目
Python:
- 简单流程:https://github.com/botify-labs/simpleflow
- 流动的:https://github.com/severb/flowy
- 加森:https://github.com/xethorn/garcon
红宝石:
开发
可能使用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 有关详细信息,请存档