[Python-checkins] cpython (merge 3.4 -> default): Merge 3.4 (asyncio)
victor.stinner
python-checkins at python.org
Tue Jan 13 16:15:12 CET 2015
https://hg.python.org/cpython/rev/56f717235c45
changeset: 94127:56f717235c45
parent: 94124:c16b76c7c8ba
parent: 94126:0387862a5675
user: Victor Stinner <victor.stinner at gmail.com>
date: Tue Jan 13 16:13:36 2015 +0100
summary:
Merge 3.4 (asyncio)
files:
Lib/asyncio/proactor_events.py | 8 +++++++-
Lib/test/test_asyncio/test_windows_events.py | 3 ++-
2 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/Lib/asyncio/proactor_events.py b/Lib/asyncio/proactor_events.py
--- a/Lib/asyncio/proactor_events.py
+++ b/Lib/asyncio/proactor_events.py
@@ -387,13 +387,19 @@
raise RuntimeError("Cannot close a running event loop")
if self.is_closed():
return
+
+ # Call these methods before closing the event loop (before calling
+ # BaseEventLoop.close), because they can schedule callbacks with
+ # call_soon(), which is forbidden when the event loop is closed.
self._stop_accept_futures()
self._close_self_pipe()
- super().close()
self._proactor.close()
self._proactor = None
self._selector = None
+ # Close the event loop
+ super().close()
+
def sock_recv(self, sock, n):
return self._proactor.recv(sock, n)
diff --git a/Lib/test/test_asyncio/test_windows_events.py b/Lib/test/test_asyncio/test_windows_events.py
--- a/Lib/test/test_asyncio/test_windows_events.py
+++ b/Lib/test/test_asyncio/test_windows_events.py
@@ -67,7 +67,8 @@
clients = []
for i in range(5):
stream_reader = asyncio.StreamReader(loop=self.loop)
- protocol = asyncio.StreamReaderProtocol(stream_reader)
+ protocol = asyncio.StreamReaderProtocol(stream_reader,
+ loop=self.loop)
trans, proto = yield from self.loop.create_pipe_connection(
lambda: protocol, ADDRESS)
self.assertIsInstance(trans, asyncio.Transport)
--
Repository URL: https://hg.python.org/cpython
More information about the Python-checkins
mailing list