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检查整数是0还是检查变量是null更好?   java Android Kotlin(初学者)使用File(),并从ACTION\u GET\u内容返回Uri   java JavaFx在“内部场景”和根场景之间切换   spring将XMLBean配置转换为java配置   java JPA HIBERNATE映射列两次(embeddedID和POJO)   c#单态模式模型在什么情况下适用?   java请求。getRemoteUser在特定时间后返回null?   spring boot中PUT api控制器的java my单元测试用例失败   java在字符串中互换地解析和替换值   java Android JNI在应用程序中检测到错误:调用JNI GetMethodID时出现挂起异常   JavaSpringDataMongo:使用非简单键持久化映射   爪哇玻璃鱼连接被拒绝   java如何在用户注册时发送特定电子邮件id的自动回复?   Java列表:实例化时和之后的赋值之间的差异