loafer 2.0.1
Asynchronous message dispatcher for concurrent tasks processing
License: MIT
Requires Python: >=3.6
Keywords: asynchronous asyncio message dispatcher tasks microservices

Loafer
======

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

|CI 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.6+ 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** full 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
.. |CI Build Status| image:: https://circleci.com/gh/georgeyk/loafer.svg?style=svg
   :target: https://circleci.com/gh/georgeyk/loafer
.. |Coverage Status| image:: https://codecov.io/gh/georgeyk/loafer/branch/master/graph/badge.svg
   :target: https://codecov.io/gh/georgeyk/loafer
.. |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 latest| image:: https://img.shields.io/pypi/v/loafer.svg?maxAge=2592000
   :target: https://pypi.python.org/pypi/loafer


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

2.0.1 (2020-07-28)
------------------

* Fix setry integration (# by @hartungstenio)
* Minor improvements

2.0.0 (2020-05-16)
------------------

* Dropped support for Python 3.5
* Added support for Python 3.8
* Update aiobotocore dependency version (#61 by @GuilhermeVBeira)
* Improvements due to changes in asyncio (#48, #52 by @lamenezes)
* Sentry wrapper/helper updated to support new sdk (wip)
* Minor documentation improvements

1.3.2 (2019-04-27)
------------------

* Improve message processing (#48 by @lamenezes)
* Improve error logging (#39 by @wiliamsouza)
* Refactor in message dispatcher and event-loop shutdown
* Minor fixes and improvements

1.3.1 (2017-10-22)
------------------

* Improve performance (#35 by @allisson)
* Fix requirement versions resolution
* Minor fixes and improvements

1.3.0 (2017-09-26)
------------------

* Refactor tasks dispatching, it should improve performance
* Refactor SQSProvider to ignore HTTP 404 errors when deleting messages
* Minor fixes and improvements

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