mirror of
https://github.com/python/cpython.git
synced 2025-09-27 02:39:58 +00:00
asyncio: Enhance BaseProactorEventLoop._loop_self_reading()
* Handle correctly CancelledError: just exit * On error, log the exception and exit Don't try to close the event loop, it is probably running and so it cannot be closed.
This commit is contained in:
parent
b5684c48e1
commit
cd0f7f9832
2 changed files with 12 additions and 5 deletions
|
@ -463,9 +463,15 @@ class BaseProactorEventLoop(base_events.BaseEventLoop):
|
||||||
if f is not None:
|
if f is not None:
|
||||||
f.result() # may raise
|
f.result() # may raise
|
||||||
f = self._proactor.recv(self._ssock, 4096)
|
f = self._proactor.recv(self._ssock, 4096)
|
||||||
except:
|
except futures.CancelledError:
|
||||||
self.close()
|
# _close_self_pipe() has been called, stop waiting for data
|
||||||
raise
|
return
|
||||||
|
except Exception as exc:
|
||||||
|
self.call_exception_handler({
|
||||||
|
'message': 'Error on reading from the event loop self pipe',
|
||||||
|
'exception': exc,
|
||||||
|
'loop': self,
|
||||||
|
})
|
||||||
else:
|
else:
|
||||||
self._self_reading_future = f
|
self._self_reading_future = f
|
||||||
f.add_done_callback(self._loop_self_reading)
|
f.add_done_callback(self._loop_self_reading)
|
||||||
|
|
|
@ -523,9 +523,10 @@ class BaseProactorEventLoopTests(test_utils.TestCase):
|
||||||
|
|
||||||
def test_loop_self_reading_exception(self):
|
def test_loop_self_reading_exception(self):
|
||||||
self.loop.close = mock.Mock()
|
self.loop.close = mock.Mock()
|
||||||
|
self.loop.call_exception_handler = mock.Mock()
|
||||||
self.proactor.recv.side_effect = OSError()
|
self.proactor.recv.side_effect = OSError()
|
||||||
self.assertRaises(OSError, self.loop._loop_self_reading)
|
self.loop._loop_self_reading()
|
||||||
self.assertTrue(self.loop.close.called)
|
self.assertTrue(self.loop.call_exception_handler.called)
|
||||||
|
|
||||||
def test_write_to_self(self):
|
def test_write_to_self(self):
|
||||||
self.loop._write_to_self()
|
self.loop._write_to_self()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue