gevent_ is a coroutine-based Python networking library.
gevent_ is a coroutine-based Python networking library.
...
@@ -12,25 +13,29 @@ Features include:
...
@@ -12,25 +13,29 @@ Features include:
* DNS queries performed through c-ares_ or a threadpool.
* DNS queries performed through c-ares_ or a threadpool.
* Ability to use standard library and 3rd party modules written for standard blocking sockets
* 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_ 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_ is written and maintained by `Denis Bilenko`_ and is licensed under MIT license.
gevent_ is written and maintained by `Denis Bilenko`_ and is licensed under MIT license.
get gevent
get gevent
----------
==========
Install Python 2.6 or newer and greenlet_ extension.
Install Python 2.6, 2.7, 3.3 or 3.4 and greenlet_ extension.
Download the latest release from `Python Package Index`_ or clone `the repository`_.
Download the latest release from `Python Package Index`_ or clone `the repository`_.
Read the documentation online at http://www.gevent.org
Read the documentation online at http://www.gevent.org
Post feedback and issues on the `bug tracker`_, `mailing list`_, blog_ and `twitter (@gevent)`_.
Post feedback and issues on the `bug tracker`_, `mailing list`_, blog_
and `twitter (@gevent)`_.
installing from github
installing from github
----------------------
======================
To install the latest development version:
To install the latest development version:
...
@@ -38,7 +43,7 @@ To install the latest development version:
...
@@ -38,7 +43,7 @@ To install the latest development version:
running tests
running tests
-------------
=============
There are a few different ways to run the tests. To simply run the
There are a few different ways to run the tests. To simply run the
tests on one version of Python during development, try this:
tests on one version of Python during development, try this:
- Add support for Python 3.3 and 3.4. Many people have contributed to
- Add support for Python 3.3 and 3.4. Many people have contributed to
this effort, including but not limited to Fantix King, hashstat,
this effort, including but not limited to Fantix King, hashstat,
...
@@ -43,12 +44,12 @@ Unreleased
...
@@ -43,12 +44,12 @@ Unreleased
sem.acquire(): ...``. PR #544 by Mouad Benchchaoui.
sem.acquire(): ...``. PR #544 by Mouad Benchchaoui.
- Patch ``subprocess`` by default in ``gevent.monkey.patch_all``. See
- Patch ``subprocess`` by default in ``gevent.monkey.patch_all``. See
#446.
#446.
- ``gevent.pool.Group.imap`` and ``imap_unordered`` not accept
- ``gevent.pool.Group.imap`` and ``imap_unordered`` now accept
multiple iterables like ``itertools.imap``. Issue #565 reported by
multiple iterables like ``itertools.imap``. Issue #565 reported by
Thomas Steinacher.
Thomas Steinacher.
Release 1.0.2
Release 1.0.2
-------------
=============
- Fix LifoQueue.peek() to return correct element. PR #456. Patch by Christine Spang.
- Fix LifoQueue.peek() to return correct element. PR #456. Patch by Christine Spang.
- Upgrade to libev 4.19
- Upgrade to libev 4.19
...
@@ -58,13 +59,13 @@ Release 1.0.2
...
@@ -58,13 +59,13 @@ Release 1.0.2
- Add compatibility with Python 2.7.9's SSL changes. Issue #477.
- Add compatibility with Python 2.7.9's SSL changes. Issue #477.
Release 1.0.1
Release 1.0.1
-------------
=============
- Fix #423: Pool's imap/imap_unordered could hang forever. Based on patch and test by Jianfei Wang.
- Fix #423: Pool's imap/imap_unordered could hang forever. Based on patch and test by Jianfei Wang.
Release 1.0 (Nov 26, 2013)
Release 1.0 (Nov 26, 2013)
--------------------------
==========================
- pywsgi: Pass copy of error list instead of direct reference. Thanks to Jonathan Kamens, Matt Iversen.
- pywsgi: Pass copy of error list instead of direct reference. Thanks to Jonathan Kamens, Matt Iversen.
- Ignore the autogenerated doc/gevent.*.rst files. Patch by Matthias Urlichs.
- Ignore the autogenerated doc/gevent.*.rst files. Patch by Matthias Urlichs.
...
@@ -73,7 +74,7 @@ Release 1.0 (Nov 26, 2013)
...
@@ -73,7 +74,7 @@ Release 1.0 (Nov 26, 2013)
Release 1.0rc3 (Sep 14, 2013)
Release 1.0rc3 (Sep 14, 2013)
-----------------------------
=============================
- Fix #251: crash in gevent.core when accessing destroyed loop.
- Fix #251: crash in gevent.core when accessing destroyed loop.
- Fix #235: Replace self._threadpool.close() with self._threadpool.kill() in hub.py. Patch by Jan-Philip Gehrcke.
- Fix #235: Replace self._threadpool.close() with self._threadpool.kill() in hub.py. Patch by Jan-Philip Gehrcke.
...
@@ -96,7 +97,7 @@ Release 1.0rc3 (Sep 14, 2013)
...
@@ -96,7 +97,7 @@ Release 1.0rc3 (Sep 14, 2013)
Release 1.0rc2 (Dec 10, 2012)
Release 1.0rc2 (Dec 10, 2012)
-----------------------------
=============================
- Fixed #210: callbacks were not run for non-default loop (bug introduced in 1.0rc1).
- Fixed #210: callbacks were not run for non-default loop (bug introduced in 1.0rc1).
- patch_all() no longer patches subprocess unless `subprocess=True` is passed.
- patch_all() no longer patches subprocess unless `subprocess=True` is passed.
...
@@ -112,7 +113,7 @@ Release 1.0rc2 (Dec 10, 2012)
...
@@ -112,7 +113,7 @@ Release 1.0rc2 (Dec 10, 2012)
Release 1.0rc1 (Oct 30, 2012)
Release 1.0rc1 (Oct 30, 2012)
-----------------------------
=============================
- Fixed hub.switch() not to touch stacktrace when switching. greenlet restores the exception information correctly since version 0.3.2. gevent now requires greenlet >= 0.3.2
- Fixed hub.switch() not to touch stacktrace when switching. greenlet restores the exception information correctly since version 0.3.2. gevent now requires greenlet >= 0.3.2
- Added gevent.wait() and gevent.iwait(). This is like gevent.joinall() but supports more objects, including Greenlet, Event, Semaphore, Popen. Without arguments it waits for the event loop to finish (previously gevent.run() did that). gevent.run will be removed before final release and gevent.joinall() might be deprecated.
- Added gevent.wait() and gevent.iwait(). This is like gevent.joinall() but supports more objects, including Greenlet, Event, Semaphore, Popen. Without arguments it waits for the event loop to finish (previously gevent.run() did that). gevent.run will be removed before final release and gevent.joinall() might be deprecated.
...
@@ -189,7 +190,7 @@ Misc:
...
@@ -189,7 +190,7 @@ Misc:
Release 1.0b4 (Sep 6, 2012)
Release 1.0b4 (Sep 6, 2012)
---------------------------
===========================
- Added gevent.os module with 'read' and 'write' functions. Patch by Geert Jansen.
- Added gevent.os module with 'read' and 'write' functions. Patch by Geert Jansen.
- Moved gevent.hub.fork to gevent.os module (it is still available as gevent.fork).
- Moved gevent.hub.fork to gevent.os module (it is still available as gevent.fork).
...
@@ -199,7 +200,7 @@ Release 1.0b4 (Sep 6, 2012)
...
@@ -199,7 +200,7 @@ Release 1.0b4 (Sep 6, 2012)
Release 1.0b3 (Jul 27, 2012)
Release 1.0b3 (Jul 27, 2012)
----------------------------
============================
- New gevent.subprocess module
- New gevent.subprocess module
- New gevent.fileobject module
- New gevent.fileobject module
...
@@ -226,7 +227,7 @@ Release 1.0b3 (Jul 27, 2012)
...
@@ -226,7 +227,7 @@ Release 1.0b3 (Jul 27, 2012)
Release 1.0b2 (Apr 11, 2012)
Release 1.0b2 (Apr 11, 2012)
----------------------------
============================
Major and backward-incompatible changes:
Major and backward-incompatible changes:
...
@@ -278,7 +279,7 @@ Developer utilities:
...
@@ -278,7 +279,7 @@ Developer utilities:
Release 1.0b1 (Jan 10, 2012)
Release 1.0b1 (Jan 10, 2012)
----------------------------
============================
Backward-incompatible changes:
Backward-incompatible changes:
...
@@ -370,7 +371,7 @@ coros:
...
@@ -370,7 +371,7 @@ coros:
Release 1.0a3 (Sep 15, 2011)
Release 1.0a3 (Sep 15, 2011)
----------------------------
============================
Added 'ref' property to all watchers. Settings it to False make watcher call ev_unref/ev_ref appropriately so that this watcher does not prevent loop.run()/hub.join()/run() from exiting.
Added 'ref' property to all watchers. Settings it to False make watcher call ev_unref/ev_ref appropriately so that this watcher does not prevent loop.run()/hub.join()/run() from exiting.
Made resolver_ares.Resolver use 'ref' property for internal watcher.
Made resolver_ares.Resolver use 'ref' property for internal watcher.
...
@@ -421,13 +422,13 @@ pywsgi: if we failed to send the reply, change 'status' to socket error so that
...
@@ -421,13 +422,13 @@ pywsgi: if we failed to send the reply, change 'status' to socket error so that
Release 1.0a2 (Aug 2, 2011)
Release 1.0a2 (Aug 2, 2011)
---------------------------
===========================
Fixed a bug in gevent.queue.Channel class. (Thanks to Alexey Borzenkov)
Fixed a bug in gevent.queue.Channel class. (Thanks to Alexey Borzenkov)
Release 1.0a1 (Aug 2, 2011)
Release 1.0a1 (Aug 2, 2011)
---------------------------
===========================
Backward-incompatible changes:
Backward-incompatible changes:
...
@@ -500,7 +501,7 @@ Miscellaneous:
...
@@ -500,7 +501,7 @@ Miscellaneous:
Release 0.13.8 (September 6, 2012)
Release 0.13.8 (September 6, 2012)
----------------------------------
==================================
- Fixed issue #80: gevent.httplib failed with RequestFailed errors because timeout was reset to 1s. Patch by Tomasz Prus.
- Fixed issue #80: gevent.httplib failed with RequestFailed errors because timeout was reset to 1s. Patch by Tomasz Prus.
- core: fix compilation with the latest Cython: remove emit_ifdef/emit_else/emit_endif.
- core: fix compilation with the latest Cython: remove emit_ifdef/emit_else/emit_endif.
- Added ``__copy__`` method to :class:`gevent.local.local` class that implements copy semantics compatible with built-in ``threading.local``. Patch by **Galfy Pundee**.
- Added ``__copy__`` method to :class:`gevent.local.local` class that implements copy semantics compatible with built-in ``threading.local``. Patch by **Galfy Pundee**.
- Fixed :class:`StreamServer` class to catch ``EWOULDBLOCK`` rather than ``EAGAIN``. This fixes lots of spurious tracebacks on Windows where these two constants are not the same. Patch by **Alexey Borzenkov**.
- Fixed :class:`StreamServer` class to catch ``EWOULDBLOCK`` rather than ``EAGAIN``. This fixes lots of spurious tracebacks on Windows where these two constants are not the same. Patch by **Alexey Borzenkov**.
- Fixed typo in :mod:`gevent.httplib` that rendered it unusable.
- Fixed typo in :mod:`gevent.httplib` that rendered it unusable.
- Removed unnecessary delay in :func:`getaddrinfo <gevent.socket.getaddrinfo>` by calling ``resolve_ipv4`` and ``resolve_ipv6`` concurrently rather than sequentially in ``AF_UNSPEC`` case.
- Removed unnecessary delay in :func:`getaddrinfo <gevent.socket.getaddrinfo>` by calling ``resolve_ipv4`` and ``resolve_ipv6`` concurrently rather than sequentially in ``AF_UNSPEC`` case.
Release 0.13.2 (Jan 28, 2011)
Release 0.13.2 (Jan 28, 2011)
-----------------------------
=============================
- Added :mod:`gevent.httplib` -- **experimental** support for libevent-http client (issue #9). Thanks to **Tommie Gannert**, **Örjan Persson**.
- Added :mod:`gevent.httplib` -- **experimental** support for libevent-http client (issue #9). Thanks to **Tommie Gannert**, **Örjan Persson**.
- Fixed crash on Mac OS X (issue #31). Patch by **Alexey Borzenkov**.
- Fixed crash on Mac OS X (issue #31). Patch by **Alexey Borzenkov**.
...
@@ -584,7 +585,7 @@ Release 0.13.2 (Jan 28, 2011)
...
@@ -584,7 +585,7 @@ Release 0.13.2 (Jan 28, 2011)
Release 0.13.1 (Sep 23, 2010)
Release 0.13.1 (Sep 23, 2010)
-----------------------------
=============================
Release highlights:
Release highlights:
...
@@ -632,7 +633,7 @@ Miscellaneous:
...
@@ -632,7 +633,7 @@ Miscellaneous:
Release 0.13.0 (Jul 14, 2010)
Release 0.13.0 (Jul 14, 2010)
-----------------------------
=============================
Release highlights:
Release highlights:
...
@@ -759,13 +760,13 @@ Thanks to **Uriel Katz** for :mod:`pywsgi` patches.
...
@@ -759,13 +760,13 @@ Thanks to **Uriel Katz** for :mod:`pywsgi` patches.
Release 0.12.2 (Mar 2, 2010)
Release 0.12.2 (Mar 2, 2010)
----------------------------
============================
* Fixed http server to put the listening socket into a non-blocking mode. Contributed by **Ralf Schmitt**.
* Fixed http server to put the listening socket into a non-blocking mode. Contributed by **Ralf Schmitt**.
Release 0.12.1 (Feb 26, 2010)
Release 0.12.1 (Feb 26, 2010)
-----------------------------
=============================
* Removed a symlink from the distribution (that causes pip to fail). Thanks to **Brad Clements** for reporting it.
* Removed a symlink from the distribution (that causes pip to fail). Thanks to **Brad Clements** for reporting it.
* setup.py: automatically create symlink from ``build/lib.../gevent/core.so`` to ``gevent/core.so``.
* setup.py: automatically create symlink from ``build/lib.../gevent/core.so`` to ``gevent/core.so``.
...
@@ -776,7 +777,7 @@ Release 0.12.1 (Feb 26, 2010)
...
@@ -776,7 +777,7 @@ Release 0.12.1 (Feb 26, 2010)
Release 0.12.0 (Feb 5, 2010)
Release 0.12.0 (Feb 5, 2010)
----------------------------
============================
Release highlights:
Release highlights:
...
@@ -864,7 +865,7 @@ Miscellaneous:
...
@@ -864,7 +865,7 @@ Miscellaneous:
Release 0.11.2 (Dec 10, 2009)
Release 0.11.2 (Dec 10, 2009)
-----------------------------
=============================
* Fixed :mod:`wsgi` to unquote ``environ['PATH_INFO']`` before passing to application.
* Fixed :mod:`wsgi` to unquote ``environ['PATH_INFO']`` before passing to application.
* Added ``SERVER_SOFTWARE`` variable to :mod:`wsgi` environ.
* Added ``SERVER_SOFTWARE`` variable to :mod:`wsgi` environ.
...
@@ -873,7 +874,7 @@ Release 0.11.2 (Dec 10, 2009)
...
@@ -873,7 +874,7 @@ Release 0.11.2 (Dec 10, 2009)
Release 0.11.1 (Nov 15, 2009)
Release 0.11.1 (Nov 15, 2009)
-----------------------------
=============================
* Fixed bug in :func:`select.select` function. Passing non-empty list of write descriptors used to cause this function to fail.
* Fixed bug in :func:`select.select` function. Passing non-empty list of write descriptors used to cause this function to fail.
* Changed setup.py to go ahead with the compilation even if the actual version of libevent cannot be determined (version 1.x.x is assumed in that case).
* Changed setup.py to go ahead with the compilation even if the actual version of libevent cannot be determined (version 1.x.x is assumed in that case).
...
@@ -885,7 +886,7 @@ Contributed by **Ludvig Ericson**:
...
@@ -885,7 +886,7 @@ Contributed by **Ludvig Ericson**:
Release 0.11.0 (Oct 9, 2009)
Release 0.11.0 (Oct 9, 2009)
----------------------------
============================
* Fixed timeout bug in :func:`joinall`, :meth:`Greenlet.join`, :meth:`pool.Pool.join`: if timeout has expired
* Fixed timeout bug in :func:`joinall`, :meth:`Greenlet.join`, :meth:`pool.Pool.join`: if timeout has expired
it used to raise :class:`Timeout`; now it returns silently.
it used to raise :class:`Timeout`; now it returns silently.
...
@@ -921,7 +922,7 @@ Release 0.11.0 (Oct 9, 2009)
...
@@ -921,7 +922,7 @@ Release 0.11.0 (Oct 9, 2009)
Release 0.10.0 (Aug 26, 2009)
Release 0.10.0 (Aug 26, 2009)
-----------------------------
=============================
* Changed :class:`Timeout` API in a backward-incompatible way:
* Changed :class:`Timeout` API in a backward-incompatible way:
:meth:`Timeout.__init__` does not start the timer immediately anymore;
:meth:`Timeout.__init__` does not start the timer immediately anymore;
...
@@ -995,7 +996,7 @@ test case for WSGI double content-length header bug.
...
@@ -995,7 +996,7 @@ test case for WSGI double content-length header bug.
Release 0.9.3 (Aug 3, 2009)
Release 0.9.3 (Aug 3, 2009)
---------------------------
===========================
* Fixed all known bugs in the :mod:`gevent.queue` module and made it 2.4-compatible.
* Fixed all known bugs in the :mod:`gevent.queue` module and made it 2.4-compatible.
:class:`LifoQueue` and :class:`PriorityQueue` are implemented as well.
:class:`LifoQueue` and :class:`PriorityQueue` are implemented as well.
...
@@ -1016,7 +1017,7 @@ Release 0.9.3 (Aug 3, 2009)
...
@@ -1016,7 +1017,7 @@ Release 0.9.3 (Aug 3, 2009)
Release 0.9.2 (Jul 20, 2009)
Release 0.9.2 (Jul 20, 2009)
----------------------------
============================
* Simplified :mod:`gevent.socket`'s implementation and fixed SSL bug reported on eventletdev
* Simplified :mod:`gevent.socket`'s implementation and fixed SSL bug reported on eventletdev
by **Cesar Alaniz** as well as failures in ``test_socket_ssl.py``.
by **Cesar Alaniz** as well as failures in ``test_socket_ssl.py``.