过早关闭嵌套异步生成器



我正在寻找如何在不完全迭代的情况下关闭嵌套异步生成器。例如:

import asyncio

async def gen1():
yield 1
yield 2

async def gen2():
async for nr in gen1():
yield nr

async def main():
stream = gen2()
print(await stream.__anext__())  # 1
await stream.aclose()

asyncio.run(main())

但是,这会导致RuntimeError

unhandled exception during asyncio.run() shutdown
task: <Task finished name='Task-2' coro=<<async_generator_athrow without __name__>()> exception=RuntimeError("can't send non-None value to a just-started coroutine")>
RuntimeError: can't send non-None value to a just-started coroutine

使用 Python 版本3.7.43.8.0b4进行测试时,存在原始问题。此后已于3.8.0rc1年修复:

https://bugs.python.org/issue38013

相关内容

  • 没有找到相关文章

最新更新