Merge 3.4 (asyncio)
This commit is contained in:
commit
29ae7633e0
|
@ -416,6 +416,10 @@ class TestCase(unittest.TestCase):
|
|||
def tearDown(self):
|
||||
events.set_event_loop(None)
|
||||
|
||||
# Detect CPython bug #23353: ensure that yield/yield-from is not used
|
||||
# in an except block of a generator
|
||||
self.assertEqual(sys.exc_info(), (None, None, None))
|
||||
|
||||
|
||||
@contextlib.contextmanager
|
||||
def disable_logger():
|
||||
|
|
|
@ -186,10 +186,18 @@ class _UnixSelectorEventLoop(selector_events.BaseSelectorEventLoop):
|
|||
self._child_watcher_callback, transp)
|
||||
try:
|
||||
yield from waiter
|
||||
except:
|
||||
except Exception as exc:
|
||||
# Workaround CPython bug #23353: using yield/yield-from in an
|
||||
# except block of a generator doesn't clear properly
|
||||
# sys.exc_info()
|
||||
err = exc
|
||||
else:
|
||||
err = None
|
||||
|
||||
if err is not None:
|
||||
transp.close()
|
||||
yield from transp._wait()
|
||||
raise
|
||||
raise err
|
||||
|
||||
return transp
|
||||
|
||||
|
|
|
@ -373,10 +373,17 @@ class ProactorEventLoop(proactor_events.BaseProactorEventLoop):
|
|||
**kwargs)
|
||||
try:
|
||||
yield from waiter
|
||||
except:
|
||||
except Exception as exc:
|
||||
# Workaround CPython bug #23353: using yield/yield-from in an
|
||||
# except block of a generator doesn't clear properly sys.exc_info()
|
||||
err = exc
|
||||
else:
|
||||
err = None
|
||||
|
||||
if err is not None:
|
||||
transp.close()
|
||||
yield from transp._wait()
|
||||
raise
|
||||
raise err
|
||||
|
||||
return transp
|
||||
|
||||
|
|
Loading…
Reference in New Issue