我必须向API发送大量带有不同参数的发布请求。 我目前使用循环为参数字典提供服务,然后为每个请求字典运行请求,这非常耗时。
我偶然发现了aiohttp异步请求库,但是我不清楚如何将变量作为参数传递,该变量将随每个请求而变化。 我发现的示例都传递了一组恒定的标题或参数以用于不同的url。
示例:
ohsome_url = 'https://api.ohsome.org/v0.9-ignite/elements/geometry/'
data = {'bpolys': ctybnds,
'keys': key,
'values': val}
ohsomeResponse = requests.post(ohsome_url, data=data).json()
变量ctybnds,key和val都是当前在循环中提取的。
在此先感谢您提供任何见解!
答案 0 :(得分:0)
您需要实现以下内容:
import aiohttp
import asyncio
async def request(url, data):
async with cs.get(url, json=data) as resp:
return resp.json()
if __name__ == '__main__':
loop = asyncio.get_event_loop()
cs = aiohttp.client.ClientSession()
requests = [
request(url, data)
for url, data in [] # your varying data here
]
result = loop.run_until_complete(
asyncio.gather(*requests)
)
print(result)