Skip to main content
This is a pre-production deployment of Warehouse. Changes made here affect the production instance of PyPI (pypi.python.org).
Help us improve Python packaging - Donate today!

Middleware which implements a retryable exceptions

Project Description

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

Configuration via Python

Wire up the middleware in your application:

from repoze.retry import Retry
mw = Retry(app, tries=3, retryable=(ValueError, IndexError))

By default, the retryable exception is repoze.retry.ConflictError (or if ZODB is installed, it’s ZODB.POSException.ConflictError); the tries count defaults to 3 times.

Configuration via Paste

If you want to use the default configuration, you can just include the filter in your application’s pipeline. Note that the filter should come before (to the “left”) of the repoze.tm filter, your pipeline includes it, so that retried requests are first aborted and then restarted in a new transaction:

[pipeline:main]
pipeline = egg:Paste#cgitb
           egg:Paste#httpexceptions
           egg:repoze.retry#retry
           egg:repoze.tm#tm
           egg:repoze.vhm#vhm_xheaders
           zope2

If you want to override the defaults, e.g. to change the number of retries, or the exceptions which will be retried, you need to make a separate section for the filter:

[filter:retry]
use = egg:repoze.retry
tries = 2
retryable = egg:mypackage.exceptions:SomeRetryableException

and then use it in the pipeline:

[pipeline:main]
pipeline = egg:Paste#cgitb
           egg:Paste#httpexceptions
           retry
           myapp

Reporting Bugs / Development Versions

Visit http://bugs.repoze.org to report bugs. Visit http://svn.repoze.org to download development or tagged versions.

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
Release History

Release History

History Node

1.4

History Node

1.3

History Node

1.2

History Node

1.1

History Node

1.0

History Node

0.9.4

History Node

0.9.3

History Node

0.9.2

This version
History Node

0.9.1

History Node

0.9

Download Files

Download Files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
repoze.retry-0.9.1.tar.gz (6.9 kB) Copy SHA256 Checksum SHA256 Source Jun 18, 2008

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting