{ "info": { "author": "maralla", "author_email": "imaralla@icloud.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "breakers\n========\n\n.. image:: https://travis-ci.org/elemepi/breakers.svg?branch=master\n :target: https://travis-ci.org/elemepi/breakers\n\nUsable Circuit Breaker pattern implementation.\n\n\nInstall\n-------\n\n.. code:: bash\n\n $ pip install breakers\n\n\nUsage\n-----\n\n.. code:: python\n\n import functools\n from breakers import Breaker\n\n def circuit_breaker(time_span=20000, unit=1000, calls_limit=10,\n error_limit=0.5, retry_time=10000):\n def deco(func):\n # Create breaker\n if not hasattr(func, '__breaker__'):\n func.__breaker__ = Breaker(time_span, unit, calls_limit,\n error_limit, retry_time)\n breaker = func.__breaker__\n\n @functools.wraps(func)\n def wraps(*args, **kwargs):\n if not breaker.is_allow():\n raise RuntimeError('Circuit breaker')\n\n exc = None\n try:\n return func(*args, **kwargs)\n except Exception as e:\n exc = e\n raise\n finally:\n if exc:\n breaker.add_failure(1)\n else:\n breaker.add_success(1)\n return wraps\n return deco\n\n @circuit_breaker()\n def f():\n import random\n if random.randint(1, 4) in (1, 2):\n raise ValueError\n return 'succeed'", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/elemepi/breakers", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "breakers", "package_url": "https://pypi.org/project/breakers/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/breakers/", "project_urls": { "Homepage": "https://github.com/elemepi/breakers" }, "release_url": "https://pypi.org/project/breakers/0.1.0/", "requires_dist": null, "requires_python": "", "summary": "Usable Circuit Breaker pattern implementation", "version": "0.1.0" }, "last_serial": 2711861, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "a86df33126cdd90343ad70c5594bfbc1", "sha256": "9a61cf5c6477c850efc2916ce3e6ae13a4a8f544b70c8bfdd4be0649409c426b" }, "downloads": -1, "filename": "breakers-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a86df33126cdd90343ad70c5594bfbc1", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 5441, "upload_time": "2017-03-17T06:42:59", "url": "https://files.pythonhosted.org/packages/be/5e/ffa1e68eec8fd610b3d661ad48075fc39ba95bf1492a9c898167f32b7e85/breakers-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "06ef7bcdfaf1ccca1a017262960947e9", "sha256": "af332c5b5417cf1a1889ba456a1da0d85aa8e8003e8f93e5bde5835f158f4482" }, "downloads": -1, "filename": "breakers-0.1.0.tar.gz", "has_sig": false, "md5_digest": "06ef7bcdfaf1ccca1a017262960947e9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3301, "upload_time": "2017-03-17T06:43:01", "url": "https://files.pythonhosted.org/packages/78/a0/fef4c8d07538edeb68c87b2199dc02c0c4740adfbe271eb3cc2d45221d52/breakers-0.1.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "a86df33126cdd90343ad70c5594bfbc1", "sha256": "9a61cf5c6477c850efc2916ce3e6ae13a4a8f544b70c8bfdd4be0649409c426b" }, "downloads": -1, "filename": "breakers-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a86df33126cdd90343ad70c5594bfbc1", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 5441, "upload_time": "2017-03-17T06:42:59", "url": "https://files.pythonhosted.org/packages/be/5e/ffa1e68eec8fd610b3d661ad48075fc39ba95bf1492a9c898167f32b7e85/breakers-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "06ef7bcdfaf1ccca1a017262960947e9", "sha256": "af332c5b5417cf1a1889ba456a1da0d85aa8e8003e8f93e5bde5835f158f4482" }, "downloads": -1, "filename": "breakers-0.1.0.tar.gz", "has_sig": false, "md5_digest": "06ef7bcdfaf1ccca1a017262960947e9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3301, "upload_time": "2017-03-17T06:43:01", "url": "https://files.pythonhosted.org/packages/78/a0/fef4c8d07538edeb68c87b2199dc02c0c4740adfbe271eb3cc2d45221d52/breakers-0.1.0.tar.gz" } ] }