Skip to content
Concurrent networking library for Python
Branch: master
Clone or download
tipabu wsgi: Only send 100 Continue response if no response has been sent yet (
#557)

Some applications may need to perform some long-running operation during
a client-request cycle. To keep the client from timing out while waiting
for the response, the application issues a status pro tempore, dribbles
out whitespace (or some other filler) periodically, and expects the
client to parse the final response to confirm success or failure.

Previously, if the application was *too* eager and sent data before ever
reading from the request body, we would write headers to the client,
send that initial data, but then *still send the 100 Continue* when the
application finally read the request. Since this would occur on a chunk
boundary, the client cannot parse the size of the next chunk, and
everything goes off the rails.

Now, only be willing to send the 100 Continue response if we have not
sent headers to the client.
Latest commit b9bf369 Mar 21, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
benchmarks
bin
doc
eventlet wsgi: Only send 100 Continue response if no response has been sent yet ( Mar 21, 2019
examples Drop support for Python2.6 and python-epoll package May 19, 2018
tests
.coveragerc
.gitignore
.hgignore
.travis.yml
AUTHORS maintainers list Dec 24, 2018
CONTRIBUTING.md contributing.md Aug 10, 2018
LICENSE Commenting out test that fails only in hudson, need to investigate wh… Feb 20, 2010
MANIFEST.in hubs: drop Twisted support Oct 29, 2014
NEWS v0.24.1 release Aug 6, 2018
README.rst
codecov.yml
setup.cfg release: use twine for PyPI upload Dec 11, 2016
setup.py Fix for Python 3.7 (#506) Sep 28, 2018
tox.ini Drop support for Python3.3 May 19, 2018

README.rst

Eventlet is a concurrent networking library for Python that allows you to change how you run your code, not how you write it.

It uses epoll or libevent for highly scalable non-blocking I/O. Coroutines ensure that the developer uses a blocking style of programming that is similar to threading, but provide the benefits of non-blocking I/O. The event dispatch is implicit, which means you can easily use Eventlet from the Python interpreter, or as a small part of a larger application.

It's easy to get started using Eventlet, and easy to convert existing applications to use it. Start off by looking at the examples, common design patterns, and the list of basic API primitives.

Quick Example

Here's something you can try right on the command line:

% python
>>> import eventlet
>>> from eventlet.green import urllib2
>>> gt = eventlet.spawn(urllib2.urlopen, 'http://eventlet.net')
>>> gt2 = eventlet.spawn(urllib2.urlopen, 'http://secondlife.com')
>>> gt2.wait()
>>> gt.wait()

Getting Eventlet

The easiest way to get Eventlet is to use pip:

pip install -U eventlet

To install latest development version once:

pip install -U https://github.com/eventlet/eventlet/archive/master.zip

Building the Docs Locally

To build a complete set of HTML documentation, you must have Sphinx, which can be found at http://sphinx.pocoo.org/ (or installed with pip install Sphinx):

cd doc
make html

The built html files can be found in doc/_build/html afterward.

Twisted

Eventlet had Twisted hub in the past, but community interest to this integration has dropped over time, now it is not supported, so with apologies for any inconvenience we discontinue Twisted integration.

If you have a project that uses Eventlet with Twisted, your options are:

  • use last working release eventlet==0.14
  • start a new project with only Twisted hub code, identify and fix problems. As of eventlet 0.13, EVENTLET_HUB environment variable can point to external modules.
  • fork Eventlet, revert Twisted removal, identify and fix problems. This work may be merged back into main project.

Apologies for any inconvenience.

Flair

https://travis-ci.org/eventlet/eventlet.svg?branch=master
You can’t perform that action at this time.