gh-75279: Document that asyncio StreamWriter.drain() may not yield to the event loop (#155132)
kumaraditya303 <[email protected]> Mon, 03 Aug 2026 14:07:16 -0400 (EDT)
| Newsgroups | gmane.comp.python.cvs |
|---|---|
| Message-ID | <[email protected]> |
https://github.com/python/cpython/commit/ab8c7372fdf9997ed5562a7506bd34af9e17f8c5 commit: ab8c7372fdf9997ed5562a7506bd34af9e17f8c5 branch: main author: Kumar Aditya <[email protected]> committer: kumaraditya303 <[email protected]> date: 2026-08-03T18:07:01Z summary: gh-75279: Document that asyncio StreamWriter.drain() may not yield to the event loop (#155132) files: M Doc/library/asyncio-stream.rst diff --git a/Doc/library/asyncio-stream.rst b/Doc/library/asyncio-stream.rst index 4092f440f66ad3..885d463c0fca89 100644 --- a/Doc/library/asyncio-stream.rst +++ b/Doc/library/asyncio-stream.rst @@ -389,6 +389,16 @@ StreamWriter be resumed. When there is nothing to wait for, the :meth:`drain` returns immediately. + .. note:: + + When the write buffer is below the high watermark, + :meth:`drain` returns immediately without yielding to + the event loop. As a result, code which repeatedly calls + ``write()`` followed by ``await drain()`` may prevent other + tasks from running. To prevent blocking behavior, yield + to the event loop explicitly with ``await asyncio.sleep(0)`` + (see :func:`asyncio.sleep`). + .. method:: start_tls(sslcontext, *, server_hostname=None, \ ssl_handshake_timeout=None, ssl_shutdown_timeout=None) :async: _______________________________________________ Python-checkins mailing list -- [email protected] To unsubscribe send an email to [email protected] https://mail.python.org/mailman3//lists/python-checkins.python.org Member address: [email protected]