mirror of
https://github.com/python/cpython.git
synced 2025-11-25 04:34:37 +00:00
Issue #23485: select.select() is now retried automatically with the recomputed
timeout when interrupted by a signal, except if the signal handler raises an exception. This change is part of the PEP 475. The asyncore and selectors module doesn't catch the InterruptedError exception anymore when calling select.select(), since this function should not raise InterruptedError anymore.
This commit is contained in:
parent
3f5d48bead
commit
f70e1ca0fc
9 changed files with 85 additions and 31 deletions
|
|
@ -173,9 +173,10 @@ PEP and implementation written by Ben Hoyt with the help of Victor Stinner.
|
|||
PEP 475: Retry system calls failing with EINTR
|
||||
----------------------------------------------
|
||||
|
||||
:pep:`475` adds support for automatic retry of system calls failing with EINTR:
|
||||
this means that user code doesn't have to deal with EINTR or InterruptedError
|
||||
manually, and should make it more robust against asynchronous signal reception.
|
||||
:pep:`475` adds support for automatic retry of system calls failing with
|
||||
:py:data:`~errno.EINTR`: this means that user code doesn't have to deal with
|
||||
EINTR or :exc:`InterruptedError` manually, and should make it more robust
|
||||
against asynchronous signal reception.
|
||||
|
||||
.. seealso::
|
||||
|
||||
|
|
@ -614,12 +615,13 @@ that may require changes to your code.
|
|||
Changes in the Python API
|
||||
-------------------------
|
||||
|
||||
* :pep:`475`: the following functions are now retried when interrupted instead
|
||||
of raising :exc:`InterruptedError` if the signal handler does not raise
|
||||
an exception:
|
||||
* :pep:`475`: Examples of functions which are now retried when interrupted
|
||||
instead of raising :exc:`InterruptedError` if the signal handler does not
|
||||
raise an exception:
|
||||
|
||||
- :func:`os.open`, :func:`open`
|
||||
- :func:`os.read`, :func:`os.write`
|
||||
- :func:`select.select`
|
||||
- :func:`time.sleep`
|
||||
|
||||
* Before Python 3.5, a :class:`datetime.time` object was considered to be false
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue