{ "info": { "author": "", "author_email": "arlyon@me.com", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Programming Language :: Python", "Programming Language :: Python :: 3.6", "Topic :: Software Development :: Libraries" ], "description": "# AioBreaker\n\nPyBreaker is a Python implementation of the Circuit Breaker pattern, described\nin Michael T. Nygard's book [Release It!](http://pragprog.com/titles/mnee/release-it).\n\nCircuit breakers exist to allow one subsystem to fail without destroying\nthe entire system. This is done by wrapping dangerous operations\n(typically integration points) with a component that can circumvent\ncalls when the system is not healthy.\n\nThis project is a fork of [pybreaker](github.com/danielfm/pybreaker)\nby Daniel Fernandes Martins for a few reasons:\n\n- learning python packaging\n- learning python testing\n- learning python documentation\n- significant refactor when supporting asyncio\n- removal of tornado support\n- removal of python 2.7 - 3.4 support\n\n## Features\n\n- Configurable list of excluded exceptions (e.g. business exceptions)\n- Configurable failure threshold and reset timeout\n- Support for several event listeners per circuit breaker\n- Can guard generator functions\n- Functions and properties for easy monitoring and management\n- Thread-safe\n- Asyncio support\n- Optional redis backing\n\n## Requirements\n\nAll you need is `python 3.5` or higher.\n\n## Installation\n\nTo install, simply download from pypi:\n\n $ pip install aiobreaker\n\n## Usage\n\nThe first step is to create an instance of `CircuitBreaker` for each\nintegration point you want to protect against.\n\n from aiobreaker import CircuitBreaker\n\n # Used in database integration points\n db_breaker = CircuitBreaker(fail_max=5, reset_timeout=timedelta(seconds=60))\n\n @db_breaker\n async def outside_integration():\n \"\"\"Hits the api\"\"\"\n ...\n\nAt that point, go ahead and get familiar with the documentation.\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/arlyon/aiobreaker", "keywords": "", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "aiobreaker", "package_url": "https://pypi.org/project/aiobreaker/", "platform": "", "project_url": "https://pypi.org/project/aiobreaker/", "project_urls": { "Homepage": "https://github.com/arlyon/aiobreaker" }, "release_url": "https://pypi.org/project/aiobreaker/1.0.0/", "requires_dist": null, "requires_python": "", "summary": "Python implementation of the Circuit Breaker pattern.", "version": "1.0.0" }, "last_serial": 4161573, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "b2a77ecf7f002f6f94dd16d856dd8bad", "sha256": "2cc8608c9d2fb9af5d859235b8f53e8750e83d9f46957581dfbc25257af0eff1" }, "downloads": -1, "filename": "aiobreaker-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "b2a77ecf7f002f6f94dd16d856dd8bad", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20253, "upload_time": "2018-08-12T12:38:53", "url": "https://files.pythonhosted.org/packages/b5/35/e3a03359b3d8ea4d6fa56b3ffabe103bf9bead3bbc069f594c9646fe1814/aiobreaker-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "68de2388cfc177e875e3e138535d8059", "sha256": "b6a826488f31e8685d9fc160c8b5e046f5d0dd8a764b1f20d44a763ba6bb1a16" }, "downloads": -1, "filename": "aiobreaker-1.0.0.tar.gz", "has_sig": false, "md5_digest": "68de2388cfc177e875e3e138535d8059", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14209, "upload_time": "2018-08-12T12:38:54", "url": "https://files.pythonhosted.org/packages/ad/85/900c3202fb82e807dc7fe3bb1abcbf219b1cc72788e3503c0696b276e26a/aiobreaker-1.0.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b2a77ecf7f002f6f94dd16d856dd8bad", "sha256": "2cc8608c9d2fb9af5d859235b8f53e8750e83d9f46957581dfbc25257af0eff1" }, "downloads": -1, "filename": "aiobreaker-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "b2a77ecf7f002f6f94dd16d856dd8bad", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20253, "upload_time": "2018-08-12T12:38:53", "url": "https://files.pythonhosted.org/packages/b5/35/e3a03359b3d8ea4d6fa56b3ffabe103bf9bead3bbc069f594c9646fe1814/aiobreaker-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "68de2388cfc177e875e3e138535d8059", "sha256": "b6a826488f31e8685d9fc160c8b5e046f5d0dd8a764b1f20d44a763ba6bb1a16" }, "downloads": -1, "filename": "aiobreaker-1.0.0.tar.gz", "has_sig": false, "md5_digest": "68de2388cfc177e875e3e138535d8059", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14209, "upload_time": "2018-08-12T12:38:54", "url": "https://files.pythonhosted.org/packages/ad/85/900c3202fb82e807dc7fe3bb1abcbf219b1cc72788e3503c0696b276e26a/aiobreaker-1.0.0.tar.gz" } ] }