repoze.retry


Namerepoze.retry JSON
Version 2.0 PyPI version JSON
download
home_pagehttp://www.repoze.org
SummaryMiddleware which implements a retryable exceptions
upload_time2023-01-25 14:59:35
maintainer
docs_urlNone
authorAgendaless Consulting
requires_python
licenseBSD-derived (http://www.repoze.org/LICENSE.txt)
keywords wsgi middleware retry
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            repoze.retry
============

.. image:: https://travis-ci.org/repoze/repoze.retry.png?branch=master
        :target: https://travis-ci.org/repoze/repoze.retry

.. image:: https://readthedocs.org/projects/repozeretry/badge/?version=latest
        :target: http://repozeretry.readthedocs.org/en/latest/ 
        :alt: Documentation Status

.. image:: https://img.shields.io/pypi/v/repoze.retry.svg
        :target: https://pypi.python.org/pypi/repoze.retry

.. image:: https://img.shields.io/pypi/pyversions/repoze.retry.svg
        :target: https://pypi.python.org/pypi/repoze.retry

This package implements a WSGI middleware filter which intercepts
"retryable" exceptions and retries the WSGI request a configurable
number of times.  If the request cannot be satisfied via retries, the
exception is reraised.

Installation
------------

Install using setuptools, e.g. (within a virtualenv)::

 $ easy_install repoze.retry

or using pip::

 $ pip install repoze.retry


Usage
-----

For details on using the various components, please see the
documentation in ``docs/index.rst``.  A rendered version of that documentation
is also available online:

 - http://repozeretry.readthedocs.org/en/latest/


Reporting Bugs 
--------------

Please report bugs in this package to

  https://github.com/repoze/repoze.retry/issues


Obtaining Source Code
---------------------

Download development or tagged versions of the software by visiting:

  https://github.com/repoze/repoze.retry



``repoze.retry`` Changelog
==========================

2.0 (2023-01-23)
----------------

- No changes from 2.0b1.

2.0b1 (2023-01-16)
------------------

- Add support for Python 3.9, 3.10, and 3.11.

- Drop support for Python 2.7, 3.5, and 3.6.

- Switch to use 'pytest' for running unit tests.

- Add Github Actions workflow to exercise unit tests / coverage.

1.5 (2020-08-27)
----------------

- Add support for Python 3.6, 3.7, and 3.8.

- Drop support for Python 3.3 and 3.4.

- Add configurable delay-with-backof when retrying.

- Retry ``transaction.interfaces.TransientError`` (if importable) by default.

1.4 (2016-06-03)
----------------

- Add support for testing under Travis.

- Add support for Python 3.4 and 3.5 and PyPy3.

- Drop support for Python 2.6 and 3.2.

1.3 (2013-10-15)
----------------

- Add support for Python 3.2 and 3.3.

1.2 (2012-07-12)
----------------

- Make sure app_iter gets closed when there is a broken pipe or other exception
  that interrupts the response generator.

1.1 (2012-03-24)
----------------

- Allow suppression of tracebacks being written to wsgi.errors during
  retries.

- Fix handling of case where environ['CONTENT_LENGTH'] is an empty string.


1.0 (2010-08-09)
----------------

- Moved documentation to Sphinx.

- Micro-optimization in lookup of 'wsgi.errors' from WSGI environ.


0.9.4 (2010-03-01)
------------------

- Fixed bug where wsgi.input read errors were not being caught for payloads
  large enough to cause a chunked read.  Also expanded the error handling for
  this part to catch IOError in addition to socket.error, since mod_wsgi has
  been observed to raise IOError in some cases.


0.9.3 (2009-09-30)
------------------

- Don't write a temporary file unless the request content length is
  greater than 2MB (use a StringIO instead).

- Make ZPublisher.Publish:Retry exceptions retryable (via a soft dependency).
  This makes repoze.retry work the same as the Zope 2 publisher when that
  module is installed.

- 100% test coverage.

- Change documentation to show proper retryable exception syntax in
  paste config.


0.9.2 (2008-07-30)
------------------

- Close the app_iter at appropriate points to silence lint errors.

- Return a Bad Request error if we get a socket error while reading
  input.

- Fix traceback output to wsgi.errors (it was going to console).

- Assert that downstream app must call start_response before successfully
  returning.


0.9.1 (2008-06-18)
------------------

- Seek wsgi.input back to zero before retrying a request due to a
  conflict error.


0.9 (2008-06-15)
----------------

- Fixed concurrency bug whereby a response from one request might be
  returned as result of a different request.

- Initial PyPI release.


0.8
---

- Added WSGI conformance testing for the middleware.


0.7
---

- Made the retryable exception(s) configurable, removing the hardwired
  dependency on ZODB3.


0.6
---

- Relaxed requirement for ZODB 3.7.2, since we might need to use
  the package with other verions.


0.5
---

- Depend on PyPI release of ZODB 3.7.2.  Upgrade to this by doing
  bin/easy_install -U 'ZODB3 >= 3.7.2, < 3.8.0a' if necessary.


0.4
---

- Write retry attempts to 'wsgi.errors' stream if availabile.

- Depend on rerolled ZODB 3.7.1 instead of zopelib.

- Add license and copyright, change trove classifiers.


0.3
---

- We now buffer the result of a downstream application's
  'start_response' call so we can retry requests which have already
  called start_response without breaking the WSGI spec (the server's
  start_response may only be called once unless there is an exception,
  and then it needs to be called with an exc_info three-tuple,
  although we're uninterested in that case here).


0.2
---

- The entry point name was wrong (it referred to "tm").  Change it so
  that egg:repoze.retry#retry should work in paste configs.

- Depend on zopelib rather than ZODB 3.8.0b3 distribution, because the
  ZODB distribution pulls in various packages (zope.interface and ZEO
  most notably) that are incompatible with stock Zope 2.10.4 apps and
  older sandboxes.  We'll need to revisit this.


0.1
---

- Initial release.



            

Raw data

            {
    "_id": null,
    "home_page": "http://www.repoze.org",
    "name": "repoze.retry",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "",
    "keywords": "wsgi middleware retry",
    "author": "Agendaless Consulting",
    "author_email": "repoze-dev@lists.repoze.org",
    "download_url": "https://files.pythonhosted.org/packages/d9/37/ae6900b2fe9b36a0b6199287f6e37c587b4e79915aede473652f21e2cc67/repoze.retry-2.0.tar.gz",
    "platform": null,
    "description": "repoze.retry\n============\n\n.. image:: https://travis-ci.org/repoze/repoze.retry.png?branch=master\n        :target: https://travis-ci.org/repoze/repoze.retry\n\n.. image:: https://readthedocs.org/projects/repozeretry/badge/?version=latest\n        :target: http://repozeretry.readthedocs.org/en/latest/ \n        :alt: Documentation Status\n\n.. image:: https://img.shields.io/pypi/v/repoze.retry.svg\n        :target: https://pypi.python.org/pypi/repoze.retry\n\n.. image:: https://img.shields.io/pypi/pyversions/repoze.retry.svg\n        :target: https://pypi.python.org/pypi/repoze.retry\n\nThis package implements a WSGI middleware filter which intercepts\n\"retryable\" exceptions and retries the WSGI request a configurable\nnumber of times.  If the request cannot be satisfied via retries, the\nexception is reraised.\n\nInstallation\n------------\n\nInstall using setuptools, e.g. (within a virtualenv)::\n\n $ easy_install repoze.retry\n\nor using pip::\n\n $ pip install repoze.retry\n\n\nUsage\n-----\n\nFor details on using the various components, please see the\ndocumentation in ``docs/index.rst``.  A rendered version of that documentation\nis also available online:\n\n - http://repozeretry.readthedocs.org/en/latest/\n\n\nReporting Bugs \n--------------\n\nPlease report bugs in this package to\n\n  https://github.com/repoze/repoze.retry/issues\n\n\nObtaining Source Code\n---------------------\n\nDownload development or tagged versions of the software by visiting:\n\n  https://github.com/repoze/repoze.retry\n\n\n\n``repoze.retry`` Changelog\n==========================\n\n2.0 (2023-01-23)\n----------------\n\n- No changes from 2.0b1.\n\n2.0b1 (2023-01-16)\n------------------\n\n- Add support for Python 3.9, 3.10, and 3.11.\n\n- Drop support for Python 2.7, 3.5, and 3.6.\n\n- Switch to use 'pytest' for running unit tests.\n\n- Add Github Actions workflow to exercise unit tests / coverage.\n\n1.5 (2020-08-27)\n----------------\n\n- Add support for Python 3.6, 3.7, and 3.8.\n\n- Drop support for Python 3.3 and 3.4.\n\n- Add configurable delay-with-backof when retrying.\n\n- Retry ``transaction.interfaces.TransientError`` (if importable) by default.\n\n1.4 (2016-06-03)\n----------------\n\n- Add support for testing under Travis.\n\n- Add support for Python 3.4 and 3.5 and PyPy3.\n\n- Drop support for Python 2.6 and 3.2.\n\n1.3 (2013-10-15)\n----------------\n\n- Add support for Python 3.2 and 3.3.\n\n1.2 (2012-07-12)\n----------------\n\n- Make sure app_iter gets closed when there is a broken pipe or other exception\n  that interrupts the response generator.\n\n1.1 (2012-03-24)\n----------------\n\n- Allow suppression of tracebacks being written to wsgi.errors during\n  retries.\n\n- Fix handling of case where environ['CONTENT_LENGTH'] is an empty string.\n\n\n1.0 (2010-08-09)\n----------------\n\n- Moved documentation to Sphinx.\n\n- Micro-optimization in lookup of 'wsgi.errors' from WSGI environ.\n\n\n0.9.4 (2010-03-01)\n------------------\n\n- Fixed bug where wsgi.input read errors were not being caught for payloads\n  large enough to cause a chunked read.  Also expanded the error handling for\n  this part to catch IOError in addition to socket.error, since mod_wsgi has\n  been observed to raise IOError in some cases.\n\n\n0.9.3 (2009-09-30)\n------------------\n\n- Don't write a temporary file unless the request content length is\n  greater than 2MB (use a StringIO instead).\n\n- Make ZPublisher.Publish:Retry exceptions retryable (via a soft dependency).\n  This makes repoze.retry work the same as the Zope 2 publisher when that\n  module is installed.\n\n- 100% test coverage.\n\n- Change documentation to show proper retryable exception syntax in\n  paste config.\n\n\n0.9.2 (2008-07-30)\n------------------\n\n- Close the app_iter at appropriate points to silence lint errors.\n\n- Return a Bad Request error if we get a socket error while reading\n  input.\n\n- Fix traceback output to wsgi.errors (it was going to console).\n\n- Assert that downstream app must call start_response before successfully\n  returning.\n\n\n0.9.1 (2008-06-18)\n------------------\n\n- Seek wsgi.input back to zero before retrying a request due to a\n  conflict error.\n\n\n0.9 (2008-06-15)\n----------------\n\n- Fixed concurrency bug whereby a response from one request might be\n  returned as result of a different request.\n\n- Initial PyPI release.\n\n\n0.8\n---\n\n- Added WSGI conformance testing for the middleware.\n\n\n0.7\n---\n\n- Made the retryable exception(s) configurable, removing the hardwired\n  dependency on ZODB3.\n\n\n0.6\n---\n\n- Relaxed requirement for ZODB 3.7.2, since we might need to use\n  the package with other verions.\n\n\n0.5\n---\n\n- Depend on PyPI release of ZODB 3.7.2.  Upgrade to this by doing\n  bin/easy_install -U 'ZODB3 >= 3.7.2, < 3.8.0a' if necessary.\n\n\n0.4\n---\n\n- Write retry attempts to 'wsgi.errors' stream if availabile.\n\n- Depend on rerolled ZODB 3.7.1 instead of zopelib.\n\n- Add license and copyright, change trove classifiers.\n\n\n0.3\n---\n\n- We now buffer the result of a downstream application's\n  'start_response' call so we can retry requests which have already\n  called start_response without breaking the WSGI spec (the server's\n  start_response may only be called once unless there is an exception,\n  and then it needs to be called with an exc_info three-tuple,\n  although we're uninterested in that case here).\n\n\n0.2\n---\n\n- The entry point name was wrong (it referred to \"tm\").  Change it so\n  that egg:repoze.retry#retry should work in paste configs.\n\n- Depend on zopelib rather than ZODB 3.8.0b3 distribution, because the\n  ZODB distribution pulls in various packages (zope.interface and ZEO\n  most notably) that are incompatible with stock Zope 2.10.4 apps and\n  older sandboxes.  We'll need to revisit this.\n\n\n0.1\n---\n\n- Initial release.\n\n\n",
    "bugtrack_url": null,
    "license": "BSD-derived (http://www.repoze.org/LICENSE.txt)",
    "summary": "Middleware which implements a retryable exceptions",
    "version": "2.0",
    "split_keywords": [
        "wsgi",
        "middleware",
        "retry"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f73ee4eb3bf12b345acdfad1aa7971e6c838cf7e672dd166d23427f5266a21dc",
                "md5": "0c505fbe580758746aefa4c5bf78848a",
                "sha256": "ad5e0d338d30c87b97b54f9720b618cf3199d30299a3945108a9ab108fb9680d"
            },
            "downloads": -1,
            "filename": "repoze.retry-2.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "0c505fbe580758746aefa4c5bf78848a",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": null,
            "size": 10948,
            "upload_time": "2023-01-25T14:59:33",
            "upload_time_iso_8601": "2023-01-25T14:59:33.884187Z",
            "url": "https://files.pythonhosted.org/packages/f7/3e/e4eb3bf12b345acdfad1aa7971e6c838cf7e672dd166d23427f5266a21dc/repoze.retry-2.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d937ae6900b2fe9b36a0b6199287f6e37c587b4e79915aede473652f21e2cc67",
                "md5": "34817913251a26e5b774036d10d1cf1a",
                "sha256": "a7b39a6307598e8afff226b0d83ee9a854cb8f65bc677d7cfb0a3527afa85c07"
            },
            "downloads": -1,
            "filename": "repoze.retry-2.0.tar.gz",
            "has_sig": false,
            "md5_digest": "34817913251a26e5b774036d10d1cf1a",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 28815,
            "upload_time": "2023-01-25T14:59:35",
            "upload_time_iso_8601": "2023-01-25T14:59:35.132527Z",
            "url": "https://files.pythonhosted.org/packages/d9/37/ae6900b2fe9b36a0b6199287f6e37c587b4e79915aede473652f21e2cc67/repoze.retry-2.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-01-25 14:59:35",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "lcname": "repoze.retry"
}
        
Elapsed time: 0.07415s