Skip to main content

High-level library for dispatching and responding to tasks via AWS Kinesis

Project description

Motion

Build Status CodeCov PyPI - Version PyPI - Python Version

Motion is a high-level task dispatch & response framework for Amazon Kinesis. It is built on top of the low-level kinesis-python library and inspired by the task definition of Celery.

Motion is still under heavy development. Things here may change

Usage

Create a Motion object:

from motion import Motion

tasks = Motion(stream_name='my-kinesis-stream')

Responding to tasks

@tasks.respond_to('my-event')
def my_event_handler(payload):
    # do something with payload...

Dispatching tasks

# dispatch an event 'my-event' with the specified payload
tasks.dispatch('my-event', {'foo': 'bar'})

Running workers

Marshalling

Events and Payloads are converted into byte streams suitable for transport on a Kinesis stream via the process of Marshalling. Motion ships with a default JSON Marshalling class that simply converts a Python object into its JSON equivalent, wrapped with the event name, but the Marshalling operations can be extended to support any type of serialization that is desired (i.e. protobuf, avro, etc)

To implement a custom Marshal you must satisfy the following method signature:

class MyMarshal(object):
    def to_native(self, payload):
        # de-serialize payload
        return event_name, event_payload

    def to_bytes(self, event_name, payload):
        # serialize payload
        return serialized_payload

Then pass an instance of your marshalling class when you create your Motion instance via the marshal= keyword.

Event names

In the basic example the .respond_to decorator is used with a string, since that's what the default JSON Marshal returns, but since custom marshalling can return anything for the event_name during the .to_native call then you can use whatever symbol you choose in the .respond_to decorator.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for motion, version 0.1.5
Filename, size File type Python version Upload date Hashes
Filename, size motion-0.1.5-py3-none-any.whl (6.6 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size motion-0.1.5.tar.gz (7.4 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page