如何在 Python 3.6 中使用异步生成器?

SS_*_*ous 8 python generator python-3.x async-await

我需要处理来自服务器的几页数据。我想为它制作一个这样的发电机。不幸的是我得到TypeError: 'async_generator' object is not iterable

async def get_data():
    i = 0
    while i < 3:
        i += 1
        data = await http_call()  # call to http-server here
        yield data

data = [i for i in get_data()]  # inside a loop
Run Code Online (Sandbox Code Playgroud)

下一个变体加注 TypeError: object async_generator can't be used in 'await' expression

data = [i for i in await get_data()]  # inside a loop
Run Code Online (Sandbox Code Playgroud)

Pat*_*ugh 13

async for在你的理解中使用。参见PEP 530 -- 异步理解

data = [i async for i in get_data()]
Run Code Online (Sandbox Code Playgroud)

根据您使用的 Python 版本,这可能仅在async def函数中可用。