[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