Допустим, у меня есть асинхронный генератор c, подобный этому:
async def event_publisher(connection, queue):
while True:
if not await connection.is_disconnected():
event = await queue.get()
yield event
else:
return
Я использую его так:
published_events = event_publisher(connection, queue)
async for event in published_events:
# do event processing here
Он работает очень хорошо, однако, когда соединение установлено отключено и не опубликовано никакого нового события, async for
будет просто ждать вечно, поэтому в идеале я хотел бы принудительно закрыть генератор следующим образом:
if connection.is_disconnected():
await published_events.aclose()
Но я получаю следующую ошибку:
RuntimeError: aclose(): asynchronous generator is already running
Есть ли способ остановить обработку уже работающего генератора?