diff options
author | Victor Stinner <victor.stinner@gmail.com> | 2015-01-13 15:13:36 (GMT) |
---|---|---|
committer | Victor Stinner <victor.stinner@gmail.com> | 2015-01-13 15:13:36 (GMT) |
commit | 7d5a95627b44b868a58128344431b8eb834b9bcb (patch) | |
tree | 031b6aa0c65286fc6b1b78ea72402a41631c60e1 | |
parent | 610bc6a211be33b390a9910943f1f9fb7656f634 (diff) | |
parent | 9036e49ba1acdd49ed7aa86a228a2657ca72c336 (diff) | |
download | cpython-7d5a95627b44b868a58128344431b8eb834b9bcb.zip cpython-7d5a95627b44b868a58128344431b8eb834b9bcb.tar.gz cpython-7d5a95627b44b868a58128344431b8eb834b9bcb.tar.bz2 |
Merge 3.4 (asyncio)
-rw-r--r-- | Lib/asyncio/proactor_events.py | 8 | ||||
-rw-r--r-- | 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 index 0a4d068..5986e37 100644 --- a/Lib/asyncio/proactor_events.py +++ b/Lib/asyncio/proactor_events.py @@ -387,13 +387,19 @@ class BaseProactorEventLoop(base_events.BaseEventLoop): 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 index 9b264a6..f9b3dd1 100644 --- a/Lib/test/test_asyncio/test_windows_events.py +++ b/Lib/test/test_asyncio/test_windows_events.py @@ -67,7 +67,8 @@ class ProactorTests(test_utils.TestCase): 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) |