如何使用aoihttp为Python3中的每个异步方法调用传递不同的参数?

时间:2019-03-13 14:24:39

标签: python-3.x python-requests aiohttp

我必须向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都是当前在循环中提取的。

在此先感谢您提供任何见解!

1 个答案:

答案 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)