From 0ca35ec4bec567956a1c13a0644c354d8671e7ed Mon Sep 17 00:00:00 2001 From: Andrew Svetlov Date: Thu, 12 Sep 2019 17:51:49 +0300 Subject: [PATCH] bpo-38013: Fix runtime error on closing async generator --- Lib/asyncio/base_events.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Lib/asyncio/base_events.py b/Lib/asyncio/base_events.py index 14b80bdda9c039f..7ab51b126ba3620 100644 --- a/Lib/asyncio/base_events.py +++ b/Lib/asyncio/base_events.py @@ -503,10 +503,13 @@ def _check_closed(self): if self._closed: raise RuntimeError('Event loop is closed') + async def _close_agen(self, agen): + await agen.aclose() + def _asyncgen_finalizer_hook(self, agen): self._asyncgens.discard(agen) if not self.is_closed(): - self.call_soon_threadsafe(self.create_task, agen.aclose()) + self.call_soon_threadsafe(self.create_task, self._close_agen(agen)) def _asyncgen_firstiter_hook(self, agen): if self._asyncgens_shutdown_called: