Metadata-Version: 2.0
Name: loafer
Version: 1.2.1
Summary: Asynchronous message dispatcher for concurrent tasks processing
Home-page: https://github.com/georgeyk/loafer/
Author: George Y. Kussumoto
Author-email: contato@georgeyk.com.br
License: MIT
Download-URL: https://github.com/georgeyk/loafer/releases
Description-Content-Type: UNKNOWN
Keywords: asynchronous asyncio message dispatcher tasks microservices
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: English
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Topic :: System :: Distributed Computing
Requires-Dist: aiohttp (>=2.0.4)
Requires-Dist: boto3 (<1.4.8,>=1.3.0)
Requires-Dist: aiobotocore (>=0.3.0)
Requires-Dist: cached-property (>=1.3.0)


Loafer
======

|PyPI latest| |PyPI Version| |PyPI License| |PyPI Downloads| |Docs|

|TravisCI Build Status| |Coverage Status| |Requirements Status|
|Scrutinizer Code Quality| |Code Climate|

----

Loafer is an asynchronous message dispatcher for concurrent tasks processing.

**Currently, only AWS SQS is supported**


Features:

* Encourages decoupling from message providers and consumers
* Easy to extend and customize
* Easy error handling, including integration with sentry
* Easy to create one or multiple services
* Generic Handlers
* Amazon SQS integration


It requires Python 3.5+ and is very experimental at the moment, expect a lot
of changes until the first major version.


Example
~~~~~~~

A simple message forwader, from ``source-queue`` to ``destination-queue``:

.. code:: python

    from loafer.ext.aws.handlers import SQSHandler
    from loafer.ext.aws.routes import SQSRoute
    from loafer.managers import LoaferManager


    routes = [
        SQSRoute('source-queue', handler=SQSHandler('destination-queue'),
    ]


    if __name__ == '__main__':
        manager = LoaferManager(routes)
        manager.run()


Documentation
~~~~~~~~~~~~~

Check out the latest ``Loafer`` documentation at `Read the Docs`_ website.


.. _`Read the Docs`: http://loafer.readthedocs.org/

.. |Docs| image:: https://readthedocs.org/projects/loafer/badge/?version=latest
   :target: http://loafer.readthedocs.org/en/latest/?badge=latest
.. |TravisCI Build Status| image:: https://travis-ci.org/georgeyk/loafer.svg?branch=master
   :target: https://travis-ci.org/georgeyk/loafer
.. |Coverage Status| image:: https://coveralls.io/repos/github/georgeyk/loafer/badge.svg?branch=master
   :target: https://coveralls.io/github/georgeyk/loafer?branch=master
.. |Requirements Status| image:: https://requires.io/github/georgeyk/loafer/requirements.svg?branch=master
   :target: https://requires.io/github/georgeyk/loafer/requirements/?branch=master
.. |Scrutinizer Code Quality| image:: https://scrutinizer-ci.com/g/georgeyk/loafer/badges/quality-score.png?b=master
   :target: https://scrutinizer-ci.com/g/georgeyk/loafer/?branch=master
.. |Code Climate| image:: https://codeclimate.com/github/georgeyk/loafer/badges/gpa.svg
   :target: https://codeclimate.com/github/georgeyk/loafer
.. |PyPI Version| image:: https://img.shields.io/pypi/pyversions/loafer.svg?maxAge=2592000
   :target: https://pypi.python.org/pypi/loafer
.. |PyPI License| image:: https://img.shields.io/pypi/l/loafer.svg?maxAge=2592000
   :target: https://pypi.python.org/pypi/loafer
.. |PyPI Downloads| image:: https://img.shields.io/pypi/dm/loafer.svg?maxAge=2592000
   :target: https://pypi.python.org/pypi/loafer
.. |PyPI latest| image:: https://img.shields.io/pypi/v/loafer.svg?maxAge=2592000
   :target: https://pypi.python.org/pypi/loafer


Changelog:
----------

1.2.1 (2017-09-11)
------------------

* Bump boto3 version (by @daneoshiga)

1.2.0 (2017-08-15)
------------------

* Enable provider parameters (boto client options)

1.1.1 (2017-06-14)
------------------

* Bugfix: fix SNS prefix value in use for topic name wildcard (by @lamenezes)

1.1.0 (2017-05-01)
------------------

* Added initial contracsts for class-based handlers
* Added generic handlers: SQSHandler/SNSHander
* Improve internal error handling
* Improve docs

1.0.2 (2017-04-13)
------------------

* Fix sentry error handler integration

1.0.1 (2017-04-09)
------------------

* Add tox and execute tests for py36
* Update aiohttp/aiobotocore versions
* Minor fixes and enhancements


1.0.0 (2017-03-27)
------------------

* Major code rewrite
* Remove CLI
* Add better support for error handlers, including sentry/raven
* Refactor exceptions
* Add message metadata information
* Update message lifecycle with handler/error handler return value
* Enable execution of one service iteration (by default, it still runs "forever")


0.0.3 (2016-04-24)
------------------

* Improve documentation
* Improve package metadata and dependencies
* Add loafer.aws.message_translator.SNSMessageTranslator class
* Fix ImportError exceptions for configuration that uses loafer.utils.import_callable


0.0.2 (2016-04-18)
------------------

* Fix build hardcoding tests dependencies


0.0.1 (2016-04-18)
------------------

* Initial release


