使用Python中的请求库制作请求数组

时间:2019-06-02 00:58:28

标签: python python-requests grequests

从另一个api请求获取数组后,我正在使用请求库来映射请求数组。我正在为请求使用循环,但是我确定有更好的方法来执行此操作,因为此API请求可以包含500多个项目,因此完成此循环有时需要20余分钟。

我尝试使用grequests库,但不断收到递归投诉。我希望尽可能使用async / map方法,但经过研究后显然不再支持异步库。

    self.set_header("Access-Control-Allow-Origin", "*")
    response = requests.get(
        "https://hacker-news.firebaseio.com/v0/paststories.json?print=pretty")
    data = response.json()
    story_list = []
    for story in data:
        temp_string = "https://hacker-news.firebaseio.com/v0/item/{}.json?print=pretty".format(
            story)
        story_data = requests.get(temp_string)
        story_list.append(story_data.json())

应该有比当前方法更好的方法来执行此循环,因为20分钟以上才能获取数据是不可接受的。原始数组中的API响应可以返回500+的数组,因此该方法应该可扩展。

2 个答案:

答案 0 :(得分:0)

请求是同步的,因此您的脚本等待响应以发出新请求。 因此,也许您应该研究aiohttp和异步请求。

这可能是一个示例:Is that benchmark reliable - aiohttp vs requests

答案 1 :(得分:0)

好吧,您只需要提高io-bond代码的速度,就可以解决该问题,请尝试以下链接:

use requests in asyncio

aiohttp_requests

希望这些信息会有所帮助。