Coroutine-based concurrency library for Python
Python Other
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
.github Update Jan 2, 2018
appveyor Run cythonize from Jan 23, 2018
benchmarks Compile the monitor greenlet tracer with Cython. Apr 23, 2018
deps Make the libuv run QUEUE part of the loop. Apr 20, 2018
doc Fix a typo Apr 23, 2018
examples More warning cleanup. Mar 6, 2018
scripts Update to 3.7.0b3 Mar 30, 2018
src lock: fix typo Apr 25, 2018
util Stop using #ifdef LIBEV_EMBED in corecext.ppyx Jan 23, 2018
.gitignore Move the greenlet tracers to their own file and compile with cython. Apr 23, 2018
.landscape.yml Merge branch 'master' into libuv Dec 5, 2017
.pylintrc Add extension points to gevent.monkey using events and setuptools ent… Apr 3, 2018
.travis.yml Update libuv to 1.20 Apr 18, 2018
AUTHORS updated AUTHORS Nov 10, 2017
CHANGES.rst Make the monitor thread survive a fork. (#1186) Apr 20, 2018
CONTRIBUTING.rst Add basic initial CONTRIBUTING.rst per github guidelines. Add badges … Mar 16, 2016
LICENSE Tweak license formatting Mar 16, 2017 Tweaks to [skip ci] Mar 6, 2018
Makefile Sigh. Pip changed the semantics of -U in pip 10. go back to the old w… Apr 16, 2018
NOTICE building libuv. doesn't link correctly yet though, on os x anyway. Oct 28, 2016
README.rst Run tests in 3.7 dev mode; cleanup resource warnings Mar 6, 2018
TODO correct links to point to the right repo May 18, 2015 Refactor the resolver classes into a package and add one for dnspython. Jan 31, 2018 Make callbacks.c stop relying on implementation details of Cython and… Jan 25, 2018 Take a whack at using ccache to speed up builds on CI. Feb 14, 2018
appveyor.yml Sigh. Pip changed the semantics of -U in pip 10. go back to the old w… Apr 16, 2018
ci-requirements.txt Add unit testing for the new close_fd functions using mocks Apr 16, 2018
dev-requirements.txt Add unit testing for the new close_fd functions using mocks Apr 16, 2018
rtd-requirements.txt Add tests for memory monitor. Mar 23, 2018
setup.cfg Manifest and zest.releaser updates Jun 5, 2017 Move the greenlet tracers to their own file and compile with cython. Apr 23, 2018
tox.ini Centralize configuration in a ``gevent.config`` object. Feb 12, 2018



gevent is a coroutine-based Python networking library.

Features include:

  • Fast event loop based on libev or libuv.
  • Lightweight execution units based on greenlet.
  • Familiar API that re-uses concepts from the Python standard library.
  • Cooperative sockets with SSL support.
  • DNS queries performed through c-ares or a threadpool.
  • Ability to use standard library and 3rd party modules written for standard blocking sockets

gevent is inspired by eventlet but features more consistent API, simpler implementation and better performance. Read why others use gevent and check out the list of the open source projects based on gevent.

gevent was written by Denis Bilenko.

Since version 1.1, gevent is maintained by NextThought with help from the contributors and is licensed under the MIT license.

See what's new in the latest major release.

Check out the detailed changelog for this version.

Get gevent

gevent runs on Python >= 2.7, Python >= 3.4, or PyPy >= 5.5 (including PyPy2 and PyPy3). On all platforms, installing setuptools is required (this is done automatically if working in a virtual environment).

You can use pip to install gevent:

pip install gevent


You need Pip 8.0 or later to install the binary wheels.


You need to install from source, not the manylinux wheels, to use the libuv backend.

Download the latest release from Python Package Index or clone the repository.

Read the documentation online at Additional installation information can be found here.

Post feedback and issues on the bug tracker, mailing list, blog and twitter (@gevent).


To install the latest development version:

pip install setuptools cffi 'cython>=0.27' git+git://

To hack on gevent (using a virtualenv):

$ git clone
$ cd gevent
$ virtualenv env
$ source env/bin/activate
(env) $ pip install -r dev-requirements.txt


You must have a C compiler, Cython, and the Python development headers installed to build a checkout. Installing CFFI on CPython (it's standard on PyPy) allows building the CFFI backends for testing, and tox is the command used to test multiple versions of Python.

Running Tests

There are a few different ways to run the tests. To simply run the tests on one version of Python during development, try this:

(env) $ pip install -e .
(env) $ cd src/greentest
(env) $ python ./

Before submitting a pull request, it's a good idea to run the tests across all supported versions of Python, and to check the code quality using prospector. This is what is done on Travis CI. Locally it can be done using tox:

pip install tox

The testrunner accepts a --coverage argument to enable code coverage metrics through the package. That would go something like this:

cd src/greentest
python --coverage
coverage combine
coverage html -i
<open htmlcov/index.html>

Builds on Travis CI automatically submit updates to to monitor test coverage.


On Debian, you will probably need libpythonX.Y-testsuite installed to run all the tests.

Continuous integration

A test suite is run for every push and pull request submitted. Travis CI is used to test on Linux, and AppVeyor runs the builds on Windows.