以下是一个使用aiohttp库进行异步请求的示例代码:
import asyncio
import aiohttp
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:
url = 'https://api.example.com'
tasks = []
for i in range(10):
task = asyncio.create_task(fetch(session, url))
tasks.append(task)
responses = await asyncio.gather(*tasks)
for response in responses:
print(response)
if __name__ == '__main__':
asyncio.run(main())
在这个示例中,我们首先定义了一个fetch
函数,它使用session.get()
方法发送GET请求,并返回响应的文本内容。
然后,在main
函数中,我们使用aiohttp.ClientSession()
创建一个会话对象,并使用session.get()
方法发送异步请求。我们使用asyncio.create_task()
方法创建任务,并将它们添加到一个任务列表中。然后,我们使用asyncio.gather()
方法等待所有任务完成,并返回所有响应的文本内容。
最后,在if __name__ == '__main__'
中,我们使用asyncio.run()
方法运行main
函数。
通过这种方式,我们可以同时发送多个异步请求,并等待它们的响应,而不会阻塞主线程。