create_task -> ensure_future + wrap event wait
This commit is contained in:
1 parent
2306fc1331
commit
024ad975b9
1 file changed
+5
-5
@@ -1922,13 +1922,13 @@ class GUIManager:
|
|||||||
# wait until the user closes the window
|
# wait until the user closes the window
|
||||||
await self._close_requested.wait()
|
await self._close_requested.wait()
|
||||||
|
|
||||||
async def coro_unless_closed(self, coro: Any) -> _T:
|
async def coro_unless_closed(self, coro: abc.Awaitable[_T]) -> _T:
|
||||||
# In Python 3.11, we need to explicitly wrap awaitables
|
# In Python 3.11, we need to explicitly wrap awaitables
|
||||||
task = asyncio.create_task(coro)
|
tasks = [asyncio.ensure_future(coro), asyncio.ensure_future(self._close_requested.wait())]
|
||||||
done: set[asyncio.Task[Any]]
|
done: set[asyncio.Task[Any]]
|
||||||
done, pending = await asyncio.wait(
|
pending: set[asyncio.Task[Any]]
|
||||||
[task, self._close_requested.wait()],
|
done, pending = await asyncio.wait( # type: ignore
|
||||||
return_when=asyncio.FIRST_COMPLETED,
|
tasks, return_when=asyncio.FIRST_COMPLETED # type: ignore
|
||||||
)
|
)
|
||||||
for task in pending:
|
for task in pending:
|
||||||
task.cancel()
|
task.cancel()
|
||||||
|
|||||||
Reference in new issue
Block a user