{"id":13501735,"url":"https://github.com/georgeyk/loafer","last_synced_at":"2025-04-09T23:15:00.935Z","repository":{"id":62576544,"uuid":"55859031","full_name":"georgeyk/loafer","owner":"georgeyk","description":"Asynchronous message dispatcher - Currently using asyncio and amazon SQS","archived":false,"fork":false,"pushed_at":"2023-03-27T18:01:11.000Z","size":311,"stargazers_count":110,"open_issues_count":6,"forks_count":23,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-04-09T23:14:55.296Z","etag":null,"topics":["asyncio","dispatcher","message-broker","microservice","python3","queue","sns","sqs"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/georgeyk.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGES.rst","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-04-09T17:55:31.000Z","updated_at":"2025-01-13T15:08:09.000Z","dependencies_parsed_at":"2024-06-21T14:23:41.563Z","dependency_job_id":"95fdd661-5cd0-4979-b6b4-093f0ea01996","html_url":"https://github.com/georgeyk/loafer","commit_stats":{"total_commits":230,"total_committers":9,"mean_commits":"25.555555555555557","dds":0.05652173913043479,"last_synced_commit":"e878f27897776362f6661d31845f756ced7be711"},"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/georgeyk%2Floafer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/georgeyk%2Floafer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/georgeyk%2Floafer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/georgeyk%2Floafer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/georgeyk","download_url":"https://codeload.github.com/georgeyk/loafer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248125591,"owners_count":21051770,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["asyncio","dispatcher","message-broker","microservice","python3","queue","sns","sqs"],"created_at":"2024-07-31T22:01:47.991Z","updated_at":"2025-04-09T23:15:00.913Z","avatar_url":"https://github.com/georgeyk.png","language":"Python","readme":"Loafer\n======\n\n|PyPI latest| |PyPI Version| |PyPI License| |Docs|\n\n|CI Build Status| |Coverage Status| |Requirements Status|\n|Scrutinizer Code Quality| |Code Climate|\n\n----\n\nLoafer is an asynchronous message dispatcher for concurrent tasks processing.\n\n**Currently, only AWS SQS is supported**\n\n\nFeatures:\n\n* Encourages decoupling from message providers and consumers\n* Easy to extend and customize\n* Easy error handling, including integration with sentry\n* Easy to create one or multiple services\n* Generic Handlers\n* Amazon SQS integration\n\n\nIt requires Python 3.6+ and is very experimental at the moment, expect a lot\nof changes until the first major version.\n\n\nExample\n~~~~~~~\n\nA simple message forwader, from ``source-queue`` to ``destination-queue``:\n\n.. code:: python\n\n    from loafer.ext.aws.handlers import SQSHandler\n    from loafer.ext.aws.routes import SQSRoute\n    from loafer.managers import LoaferManager\n\n\n    routes = [\n        SQSRoute('source-queue', handler=SQSHandler('destination-queue')),\n    ]\n\n\n    if __name__ == '__main__':\n        manager = LoaferManager(routes)\n        manager.run()\n\n\nDocumentation\n~~~~~~~~~~~~~\n\nCheck out the latest **Loafer** full documentation at `Read the Docs`_ website.\n\n\n.. _`Read the Docs`: http://loafer.readthedocs.org/\n\n\n\n.. |Docs| image:: https://readthedocs.org/projects/loafer/badge/?version=latest\n   :target: http://loafer.readthedocs.org/en/latest/?badge=latest\n.. |CI Build Status| image:: https://circleci.com/gh/georgeyk/loafer.svg?style=svg\n   :target: https://circleci.com/gh/georgeyk/loafer\n.. |Coverage Status| image:: https://codecov.io/gh/georgeyk/loafer/branch/master/graph/badge.svg\n   :target: https://codecov.io/gh/georgeyk/loafer\n.. |Requirements Status| image:: https://requires.io/github/georgeyk/loafer/requirements.svg?branch=master\n   :target: https://requires.io/github/georgeyk/loafer/requirements/?branch=master\n.. |Scrutinizer Code Quality| image:: https://scrutinizer-ci.com/g/georgeyk/loafer/badges/quality-score.png?b=master\n   :target: https://scrutinizer-ci.com/g/georgeyk/loafer/?branch=master\n.. |Code Climate| image:: https://codeclimate.com/github/georgeyk/loafer/badges/gpa.svg\n   :target: https://codeclimate.com/github/georgeyk/loafer\n.. |PyPI Version| image:: https://img.shields.io/pypi/pyversions/loafer.svg?maxAge=2592000\n   :target: https://pypi.python.org/pypi/loafer\n.. |PyPI License| image:: https://img.shields.io/pypi/l/loafer.svg?maxAge=2592000\n   :target: https://pypi.python.org/pypi/loafer\n.. |PyPI latest| image:: https://img.shields.io/pypi/v/loafer.svg?maxAge=2592000\n   :target: https://pypi.python.org/pypi/loafer\n","funding_links":[],"categories":["Python","python3"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgeorgeyk%2Floafer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgeorgeyk%2Floafer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgeorgeyk%2Floafer/lists"}