什么是异步迭代器的类型?
问题描述:
例(以下问题):??什么是异步迭代器的类型?
import asyncio
import typing as t
from aiokafka import AIOKafkaConsumer
class KafkaSimpleClient:
...
async def receive(self, topic: str) -> ???:
bootstrap_servers = ','.join(
'{}:{}'.format(host, port)
for host, port in self._bootstrap_servers
)
consumer = AIOKafkaConsumer(
loop=asyncio.get_event_loop(),
bootstrap_servers=bootstrap_servers,
metadata_max_age_ms=5000,
)
consumer.subscribe(pattern=topic)
await consumer.start()
return consumer
现在,我用的receive
返回类型挣扎(它返回的东西,可以用async for x in y
进行迭代,这是什么它是一个awaitable迭代器它在awaitables的迭代器吗?也许别的东西完全?
??? = t.Awaitable[t.Iterator]
??? = t.Iterator[t.Awaitable]
??? = (Something else)
答
Source codetyping
模块不容置疑。
async def receive(self, topic: str) -> t.AsyncIterable:
或
async def receive(self, topic: str) -> t.AsyncIterator:
,如果你确信这将是严格的迭代器。
它有什么关系? Python是一种动态语言,所以它应该没关系。你似乎知道你可以在y中使用'async for x',这似乎是结束了这件事。 – quamrana
@quamrana你似乎可以阅读这个问题,但你不知道答案。你的评论有什么意义? – wvxvw
那么,我仍然想知道为什么它对你的重要性是什么。如果你想知道这个类型是什么,你将如何处理这些信息? – quamrana