- Python 3: A monkey-patched :class:
threading.RLock
now properly blocks (or deadlocks) inacquire
if the default value for timeout of -1 is used (which differs from gevent's default of None). Theacquire
method also raises the same :exc:ValueError
exceptions that the standard library does for invalid parameters. Reported in [#750] by Joy Zheng. - Fix a race condition in :class:
~gevent.event.Event
that made it returnFalse
when the event was set and cleared by the same greenlet before allowing a switch to already waiting greenlets. (Found by the 3.4 and 3.5 standard library test suites; the same as Pythonbug 13502
_. Note that the Python 2 standard library still has this race condition.) - :class:
~gevent.event.Event
and :class:~.AsyncResult
now wake waiting greenlets in the same (unspecified) order. Previously,AsyncResult
tended to use a FIFO order, but this was never guaranteed. Both classes also use less per-instance memory. - Using a :class:
~logging.Logger
as a :mod:pywsgi
error or request log stream no longer produces extra newlines. Reported in [#756] by ael-code. - Windows: Installing from an sdist (.tar.gz) on PyPI no longer requires having Cython installed first. (Note that the binary installation formats (wheels, exes, msis) are preferred on Windows.) Reported in [#757] by Ned Batchelder.
- Issue a warning when :func:
~gevent.monkey.patch_all
is called withos
set to False (not the default) butsignal
is still True (the default). This combination of parameters will cause signal handlers forSIGCHLD
to not get called. In the future this might raise an error. Reported by Josh Zuech. - Issue a warning when :func:
~gevent.monkey.patch_all
is called more than once with different arguments. That causes the cumulative set of all True arguments to be patched, which may cause unexpected results. - Fix returning the original values of certain
threading
attributes from :func:gevent.monkey.get_original
.