diff --git a/Lib/asyncio/base_events.py b/Lib/asyncio/base_events.py index 5b5fcde4388..e59b2b75ac1 100644 --- a/Lib/asyncio/base_events.py +++ b/Lib/asyncio/base_events.py @@ -351,6 +351,9 @@ def _asyncgen_finalizer_hook(self, agen): self._asyncgens.discard(agen) if not self.is_closed(): self.create_task(agen.aclose()) + # Wake up the loop if the finalizer was called from + # a different thread. + self._write_to_self() def _asyncgen_firstiter_hook(self, agen): if self._asyncgens_shutdown_called: diff --git a/Misc/NEWS b/Misc/NEWS index 4410edadf9a..e508fc15598 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -38,6 +38,8 @@ Library - Issue #28492: Fix how StopIteration exception is raised in _asyncio.Future. +- Issue #28500: Fix asyncio to handle async gens GC from another thread. + Build -----