以下是一个使用Python的示例代码,演示了如何并行获取多个URL的带有头部信息的异步映射:
import asyncio
import aiohttp
async def fetch(url):
async with aiohttp.ClientSession() as session:
async with session.get(url, headers={'User-Agent': 'Mozilla/5.0'}) as response:
return await response.text()
async def main():
urls = ['http://example.com', 'http://example.org', 'http://example.net']
tasks = []
for url in urls:
tasks.append(asyncio.create_task(fetch(url)))
responses = await asyncio.gather(*tasks)
for url, response in zip(urls, responses):
print(f'Response from {url}: {response[:50]}')
asyncio.run(main())
在上面的代码中,首先定义了一个fetch
函数,它使用aiohttp
库中的ClientSession
来发起异步的HTTP请求。每个请求都使用headers
参数添加了一个自定义的User-Agent头部信息。
然后,在main
函数中,我们定义了要获取的URL列表。我们创建了一个空的任务列表,并遍历URL列表,为每个URL创建一个fetch
任务,并将其添加到任务列表中。
接下来,我们使用asyncio.gather
函数来并行运行所有的任务,并等待它们完成。gather
函数的参数是一个可变参数,接受多个任务作为参数。
最后,我们使用zip
函数将URL列表和响应列表一一对应起来,并打印每个URL对应的响应的前50个字符。
通过使用asyncio
和aiohttp
库,我们可以方便地实现并行获取多个URL的带有头部信息的异步映射。
上一篇:并行获取捕获组件状态导致竞态条件
下一篇:并行获取多个字段的模式