python3 同时对urls里的每个url执行异步函数 fetch_apiurl+requestargsimei requestmethod requestheaderskey if key in requestheaders else None 结果写进abc这个list等所有异步函数结束继续执行后面的代码怎么写
您可以使用asyncio和aiohttp库来实现这个功能,代码如下:
import asyncio
import aiohttp
async def fetch_api(url, method, key):
async with aiohttp.ClientSession() as session:
async with session.request(method, url, headers={'key': key}) as response:
return await response.json()
async def main(urls):
abc = []
tasks = []
for url in urls:
tasks.append(asyncio.ensure_future(fetch_api(url, 'GET', None)))
# 如果需要传递key参数,可以将None替换为对应的值
for task in asyncio.as_completed(tasks):
result = await task
abc.append(result)
print(abc)
# 这里可以继续执行后续代码
if __name__ == '__main__':
urls = ['http://example.com/api', 'http://example.org/api']
asyncio.run(main(urls))
在这个示例中,我们定义了一个fetch_api函数来执行异步HTTP请求,并将其作为协程使用。然后,我们定义了一个main函数来创建任务列表,等待所有任务完成,并将结果存储在abc列表中。最后,我们使用asyncio.run来运行主函数。
请注意,我们使用asyncio.ensure_future来将每个任务转换为协程,然后使用asyncio.as_completed来等待所有任务完成,并按照它们完成的顺序返回结果。在这个过程中,我们使用aiohttp库来执行HTTP请求。
原文地址: http://www.cveoy.top/t/topic/bP6X 著作权归作者所有。请勿转载和采集!