https://github.com/pior/caravan
Light python framework for AWS SWF
https://github.com/pior/caravan
Last synced: 2 months ago
JSON representation
Light python framework for AWS SWF
- Host: GitHub
- URL: https://github.com/pior/caravan
- Owner: pior
- License: mit
- Created: 2015-10-18T23:12:00.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2016-01-03T23:24:49.000Z (over 9 years ago)
- Last Synced: 2025-03-27T19:13:43.441Z (3 months ago)
- Language: Python
- Size: 87.9 KB
- Stars: 8
- Watchers: 1
- Forks: 2
- Open Issues: 8
-
Metadata Files:
- Readme: README.rst
- Changelog: CHANGES.rst
- License: LICENSE
Awesome Lists containing this project
README
=======
Caravan
=======**Light python framework for AWS SWF**
About this Project
==================Caravan is being used at `Ludia `_ for projects
like marketing campaign system and on-demand distributed processing
systems (thanks to hundreds of Lambda functions).Feedbacks, ideas and contributions are highly welcomed. (Just open a
`Github issue `_).- `Code on Github `_
- `PyPi `_
- `Tests `_ |travis| |coveralls|
- Doc: ``TODO``.. |travis| image:: https://travis-ci.org/pior/caravan.svg?branch=master
:target: https://travis-ci.org/pior/caravan.. |coveralls| image:: https://coveralls.io/repos/pior/caravan/badge.svg?branch=master&service=github
:target: https://coveralls.io/github/pior/caravan?branch=masterFocus of this project
=====================Similar projects exists (like Simpleflow which seems mature).
Here is where Caravan differs from existing projects:- Support of AWS Lambda tasks
- Boto3
- KISS
- Bring your own workflow framework (standard implementations as contribs)
- No coupling between Decider code and Activity code
- Paster compatible config fileFeatures
========- Decider worker
- Activity task worker ``TODO``
- Commands to start/signal/terminate an arbitrary workflow execution
- Command to list open workflow execution
- Command to register a domain / list domainsConfiguration
=============Caravan uses Boto3 to connect to AWS. See
`Boto 3 configuration guide `_
for the complete documentation... warning::
On AWS EC2, the metadata provider only provides the credentials, the
must be provided by configuration.Environment Variables
---------------------``AWS_ACCESS_KEY_ID``
The access key for your AWS account.``AWS_SECRET_ACCESS_KEY``
The secret key for your AWS account.``AWS_DEFAULT_REGION``
The default region to use, e.g. `us-east-1`.``AWS_PROFILE``
The default credential and configuration profile to use, if any.Configuration Files
-------------------The credentials file is located at ``~/.aws/credentials``::
[default]
# The access key for your AWS account
aws_access_key_id=# The secret key for your AWS account
aws_secret_access_key=The settings file is located at ``~/.aws/config``::
[default]
# The default region when making requests
region=It also supports profiles::
[profile dev-profile]
# The default region when using the dev-profile account
region=Demo
====Setup a SWF domain to run this example::
$ caravan-domain-register -n CaravanDemo --retention-days 1
Write a workflow type (see full demo_)
.. code:: python
from caravan import Workflow
class Demo(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'def run(self):
self.task.print_events()
self.task.add_decision('CompleteWorkflowExecution').. _demo: https://github.com/pior/caravan/blob/master/caravan/examples/demo.py
Run the decider with the Demo workflow::
$ caravan-decider -d CaravanDemo -m caravan.examples.demo -t default --verbose
Start an execution of the Demo workflow::
$ caravan-start -d CaravanDemo -n Demo -v 0.1 -i 1
(The Demo workflow will wait for 5 minutes)
List the executions::
$ caravan-list -d CaravanDemo
$ caravan-list -d CaravanDemo --oldest 2015-01-01Send a signal to an execution::
$ 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 STOPTerminate an execution::
$ caravan-terminate -d CaravanDemo -i 1
Similar projects
================Python:
- Simpleflow: https://github.com/botify-labs/simpleflow
- Flowy: https://github.com/severb/flowy
- Garcon: https://github.com/xethorn/garconRuby:
- AWS Flow: https://github.com/aws/aws-flow-ruby
References
==========- `AWS Developer Guide for SWF `_
- `AWS API reference for SWF `_Development
===========Possibly use `virtualenvwrapper `_
to manage your virtualenvs.$ mkvirtualenv caravan
or
$ virtualenv caravan
Clone and install development dependencies::
(caravan)$ git clone [email protected]:pior/caravan.git
(caravan)$ cd caravan
(caravan)$ pip install -e .[dev]Run tests::
(caravan)$ nosetests
Release
=======The release process use zest.releaser::
$ fullrelease
License
=======MIT licensed. See the bundled
`LICENSE `_
file for more details