Создание массива запросов с использованием библиотеки запросов в Python - PullRequest
0 голосов
/ 02 июня 2019

Я использую библиотеку запросов для сопоставления массива запросов после получения массива из другого запроса API. Я использую цикл для запросов, но я уверен, что есть лучший способ сделать это, потому что этот запрос API может иметь более 500 элементов, поэтому завершение этого цикла занимает иногда более 20 минут.

Я пытался использовать библиотеку grequests и продолжал получать жалобы на рекурсию. Я хотел бы использовать метод async / map, если это возможно, но после исследования, очевидно, библиотека async больше не поддерживается.

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 ]

1 голос
/ 02 июня 2019

ну, вам просто нужно повысить скорость вашего кода io-bond, есть варианты решения, попробуйте эти ссылки, пожалуйста:

использовать запросы в asyncio

aiohttp_requests

надеюсь, что эта информация может помочь.

1 голос
/ 02 июня 2019

запросов является синхронным, поэтому ваш сценарий ожидает ответа на новый запрос.Поэтому, возможно, вам следует изучить aiohttp и aysnchronous запросы.

Это может быть примером: Является ли этот эталонный тест надежным - aiohttp против запросов

...