使用aiohttp.ClientSession()代替aiohttp.request()函数,并使用async with语句来打开会话,以便您可以同时运行多个请求。以下是示例代码:
import aiohttp
import asyncio
async def fetch(session, url):
async with session.get(url) as response:
return await response.text()
async def main():
async with aiohttp.ClientSession() as session:
tasks = []
for i in range(5):
url = f'http://httpbin.org/delay/{i}'
task = asyncio.ensure_future(fetch(session, url))
tasks.append(task)
responses = await asyncio.gather(*tasks)
print(responses)
if __name__ == '__main__':
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
此代码将并行获取http://httpbin.org/delay/i的响应,其中i为0到4之间的整数。注意,我们使用了async with语句来打开aiohttp.ClientSession()。因此,在此示例中,我们可以同时运行多个请求。
上一篇:asyncio不能并行运行