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.

Source Distribution

motion-0.1.5.tar.gz (7.4 kB view details)

Uploaded Source

Built Distribution

motion-0.1.5-py3-none-any.whl (6.6 kB view details)

Uploaded Python 3

File details

Details for the file motion-0.1.5.tar.gz.

File metadata

  • Download URL: motion-0.1.5.tar.gz
  • Upload date:
  • Size: 7.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.0

File hashes

Hashes for motion-0.1.5.tar.gz
Algorithm Hash digest
SHA256 1bdd128f4041a60867292773c35d9e9b394be74215056679ed3522c4670c1d8a
MD5 7379b26dda03f5048efe24771ba7a235
BLAKE2b-256 a3fd859e2e4f1f90fd52e283f80a739b8630c62287a7e6d377cd72d99e4ef4ab

See more details on using hashes here.

File details

Details for the file motion-0.1.5-py3-none-any.whl.

File metadata

  • Download URL: motion-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 6.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.0

File hashes

Hashes for motion-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 5fee777bb19f78fbf40907cf2a698c1e36ebd94dc83b84e8920434803bb56e3b
MD5 ab49d300dfcfa072f111d69e989bb461
BLAKE2b-256 ca45487b08af762872a4b9dc956773e4634fbbcbf6d399f3980e7ed3b2813059

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page