【问题标题】:Python 3.9: async_generator can't be used in 'await' expressionPython 3.9:async_generator 不能用于“等待”表达式
【发布时间】:2021-09-16 14:25:29
【问题描述】:

我正在尝试以下方法:

class Payload_Session_Generator:
    def __init__(self):
        pass
    async def __anext__(self):
        async for payload in generate_fb_payload():
            if type(payload) != str:
                yield payload
            else:
                StopAsyncIteration
    def __aiter__(self):
        return self

然后将其作为实例传递给不同的函数,并显式调用 aiter 方法,并且 _iter 是上述类的对象:

chunk = await self._iter.__anext__()

这会产生以下错误:

TypeError: object async_generator can't be used in 'await' expression

【问题讨论】:

  • __anext__ 必须是return 一个元素。 __aiter__ 可能是yield 多个 元素。

标签: python python-3.x generator python-asyncio


【解决方案1】:

修改你的代码

class PayloadSessionGenerator:
    def __init__(self):
        pass
    
    async def __aiter__(self):
        async for payload in generate_fb_payload():
            if type(payload) != str:
                yield payload
            else:
                StopAsyncIteration

尝试下一次通话

x = Payload_Session_Generator()
chunk = await x.__anext__()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-26
    • 2021-09-28
    • 1970-01-01
    • 2021-06-02
    • 2021-10-09
    相关资源
    最近更新 更多