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.2.0.tar.gz (7.3 kB view details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

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

File metadata

  • Download URL: motion-0.2.0.tar.gz
  • Upload date:
  • Size: 7.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.50.0 CPython/3.8.0

File hashes

Hashes for motion-0.2.0.tar.gz
Algorithm Hash digest
SHA256 5ef37d33e3c839cb90252c63f6d4ad05afb039359c9935f8faa850dce4efad4f
MD5 b28f98ac9530d8e12fd438bd04b392f2
BLAKE2b-256 cdeb01bc2ffc420579fab4910c9938039daeaa962ef2db848aad6089c403a3e9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: motion-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 6.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.50.0 CPython/3.8.0

File hashes

Hashes for motion-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4ed068b47952689a31ff4d4d5bb875dc658bc1f425dfe98c0b47af8bff7768e1
MD5 523202760b7d72c7399a4f5cc362e02b
BLAKE2b-256 c8c14bc02314697c96000d23addfa6b3e23c553e097adc033a3f8deacdc6de96

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