Coroutine-based concurrency library for Python
sendall
on a non-blocking socket could spuriously fail
with a timeout.sys.stderr
has been monkey-patched (not recommended),
exceptions that the hub reports aren't lost and can still be caught.
Reported in :issue:825
by Jelle Smet.selectors.SelectSelector
is properly monkey-patched
regardless of the order of imports. Reported in :issue:835
by
Przemysław Węgrzyn.reload(site)
no longer fails with a TypeError
if
gevent has been imported. Reported in :issue:805
by Jake Hilton.wait
to return prematurely. Reported in :issue:771
by Sergey
Vasilyev.777
by wiggin15.ref
parameter to :func:gevent.os.fork_and_watch
was being ignored.gevent.queue.Channel
is now correctly iterable, instead of
raising a :exc:TypeError
.socket.socket.sendmsg
,
:meth:socket.socket.recvmsg
and :meth:socket.socket.recvmsg_into
on platforms where they are defined. Initial :pr:773
by Jakub
Klama.threading.RLock
now properly
blocks (or deadlocks) in acquire
if the default value for
timeout of -1 is used (which differs from gevent's default of
None). The acquire
method also raises the same :exc:ValueError
exceptions that the standard library does for invalid parameters.
Reported in #750 by Joy Zheng.~gevent.event.Event
that made it
return False
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 Python
bug 13502
_. Note that the Python 2 standard library still has this
race condition.)~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.~logging.Logger
as a :mod:pywsgi
error or request
log stream no longer produces extra newlines. Reported in
#756 by ael-code.~gevent.monkey.patch_all
is called with
os
set to False (not the default) but signal
is still True
(the default). This combination of parameters will cause signal
handlers for SIGCHLD
to not get called. In the future this might
raise an error. Reported by Josh Zuech.~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.threading
attributes from :func:gevent.monkey.get_original
.~socket.socket.sendall
method of a gevent SSL socket that has
a timeout now returns immediately (like the standard library does),
instead of incorrectly raising :exc:ssl.SSLEOFError
. (Note that
sending empty data with the :meth:~socket.socket.send
method does raise SSLEOFError
in
both gevent and the standard library.) Reported in #719 by
Mustafa Atik and Tymur Maryokhin, with a reproducible test case
provided by Timo Savola.OverflowError
when using the readline
method of the WSGI input stream without a size hint or with a large size hint when the client is uploading a large amount of data. (This only impacted CPython 2; PyPy and Python 3 already handled this.) Reported in issue #289 by ggjjlldd, with contributions by Nathan Hoad.SSLSocket
now raises the same ValueError the standard library does, instead of an AttributeError
. Found by updating gevent’s copy of the standard library test cases. Initially reported in issue #735 by Dmitrij D. Czarkoff.socket.sendfile
.socket.get/set_inheritable
.gevent.lock.Semaphore
subclasses. If monkey-patched, this could
also apply to :class:threading.Semaphore
objects. Reported in
:issue:660
by Jay Oster.details
_). Thanks to Jay Oster.~.WSGIHandler
to handle invalid HTTP client
requests. Reported by not-bob.~.WSGIServer
more robustly supports :class:~logging.Logger
-like parameters for
log
and error_log
(as introduced in 1.1b1, this could cause
integration issues with gunicorn). Reported in :issue:663
by Jay
Oster.~gevent.threading._DummyThread
objects, created in a
monkey-patched system when :func:threading.current_thread
is
called in a new greenlet (which often happens implicitly, such as
when logging) are much lighter weight. For example, they no longer
allocate and then delete a :class:~gevent.lock.Semaphore
, which is
especially important for PyPy.gevent.pywsgi
formats the status code
correctly on Python 3. Reported in :issue:664
by Kevin Chen.gevent.lock.Semaphore
, which was unintentionally removed
as part of making Semaphore
atomic on PyPy on 1.1b1. Reported in
:issue:666
by Ivan-Zhu.665
by Hexchain Tong.