我在我的龙卷风处理程序下面的方法:
async def get(self):
url = 'url here'
try:
async for batch in downloader.fetch(url):
self.write(batch)
await self.flush()
except Exception as e:
logger.warning(e)
这是downloader.fetch()的代码:
async def fetch(url, **kwargs):
timeout = kwargs.get('timeout', aiohttp.ClientTimeout(total=12))
response_validator = kwargs.get('response_validator', json_response_validator)
extractor = kwargs.get('extractor', json_extractor)
try:
async with aiohttp.ClientSession(timeout=timeout) as session:
async with session.get(url) as resp:
response_validator(resp)
async for batch in extractor(resp):
yield batch
except aiohttp.client_exceptions.ClientConnectorError:
logger.warning("bad request")
raise
except asyncio.TimeoutError:
logger.warning("server timeout")
raise
我想从多个相同常下载者产生“批”的对象。 我想从第一下载等第一可用的批次,直到完成所有下载者。 像这样的东西(这是不工作的代码):
async for batch in [downloader.fetch(url1), downloader.fetch(url2)]:
....
这可能吗? 我如何修改我为了能够从多个并行协同程序产生我在做什么?