【问题标题】:async_generator' object is not iterableasync_generator' 对象不可迭代
【发布时间】:2022-01-27 18:11:09
【问题描述】:

我需要在异步函数中返回一个值。 我尝试使用同步形式的返回:

import asyncio

async def main():
    for i in range(10):
        return i
        await asyncio.sleep(1)

print(asyncio.run(main()))

输出:

0 [Finished in 204ms]

但它只是返回第一个循环的值,没有被expexted。于是改代码如下:

import asyncio

async def main():
    for i in range(10):
        yield i
        await asyncio.sleep(1)

for _ in main():
    print(_)

输出:

TypeError: 'async_generator' object is not iterable

通过使用异步生成器,我遇到了这个错误。如何为每个异步函数循环返回一个值?

谢谢

【问题讨论】:

    标签: python-3.x async-await python-asyncio


    【解决方案1】:

    您需要使用async for,它本身需要在async 函数中:

    async def get_result():
        async for i in main():
            print(i)
    
    asyncio.run(get_result())
    

    【讨论】:

    • 谢谢。它已通过使用get_result 函数修复。
    猜你喜欢
    • 2022-07-26
    • 1970-01-01
    • 2019-11-12
    • 2017-01-05
    • 2015-11-11
    • 2021-06-06
    • 2013-05-27
    • 2013-08-02
    • 2012-06-21
    相关资源
    最近更新 更多