2017-10-17 13 views
1

例(質問は以下の):非同期イテレータのタイプは何ですか?

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 

は今、私は(それがasync for x in yで巡回できない何かを返しreceiveの戻り値の型に苦しんだことは何ですか、それはawaitableイテレータです。??それおそらくawaitablesの反復子?完全に他の何か?

  • ??? = t.Awaitable[t.Iterator]
  • ??? = t.Iterator[t.Awaitable]
  • ??? = (Something else)
+0

何が問題なのですか? Pythonは動的言語なので重要ではありません。 'async for x in y:'を使うことができることを知っているようです。そうすれば問題は終わりです。 – quamrana

+1

@quamranaあなたは質問を読むことができるようですが、その答えは分かりません。あなたのコメントのポイントは何ですか? – wvxvw

+0

まあ、私はまだタイプが何であるかがあなたにとって重要である理由を知りたいです。タイプが何であるか知っていたら、その情報で何をしますか? – quamrana

答えて

1

Source codetypingモジュールは疑いがありません。

async def receive(self, topic: str) -> t.AsyncIterable: 

または

async def receive(self, topic: str) -> t.AsyncIterator: 

それは厳密にイテレータだろうあなたは確かであれば。

関連する問題