Почему Python httpx.get или Requests.get намного медленнее, чем cURL для этого API?Python

Программы на Python
Anonymous
Почему Python httpx.get или Requests.get намного медленнее, чем cURL для этого API?

Сообщение Anonymous »

Для проекта домашней автоматизации я пытаюсь получить данные о задержке поездов. Существует оболочка API с примерами cURL. Они работают нормально, но запросы Python Request.get и httpx.get медленно извлекают данные (до минуты для запросов и около 4 секунд для httpx), но curl или вставка ссылки в браузере возвращает результат почти сразу. Почему?
В Интернете предполагается, что некоторые сайты имеют защиту от парсинга и могут ограничивать или блокировать запросы, поскольку они используют HTTP1.0. В этом API httpx кажется намного быстрее, но далеко не так быстро, как Curl или браузер.
Некоторые примеры: этот фрагмент Python занимает около 4 секунды:

Код: Выделить всё

    import httpx
client = httpx.Client(http2=True)
response = client.get('https://v6.db.transport.rest/stations?query=berlin')
print(response.text)
Это займет около минуты:

Код: Выделить всё

    import requests
response = requests.get('https://v6.db.transport.rest/stations?query=berlin')
print(response.text)
Это возвращается почти сразу:

Код: Выделить всё

    import subprocess
command = 'curl \'https://v6.db.transport.rest/stations?query=berlin\' -s'
result = subprocess.run(command, capture_output=True, shell=True, text=True)
print(result.stdout)
print(result.stderr)
В чем тут волшебство?

Подробнее здесь: https://stackoverflow.com/questions/789 ... r-this-api

Вернуться в «Python»