@Rozalot

Как увеличить паузу между отправкой запроса и получением результата?

Доброго времени суток!
Пишу на Python программу для получения через API сайта информации с помощью requests.get().
При запуске все работает в целом нормально, за исключением того, что информация с сайта приходит не в полном объеме; причина - недостаточная пауза между отправкой запроса и получением результата. Для получения полноценного ответа требуется порядка 30 секунд ожидания.
В этой связи вопрос: как можно увеличить эту паузу???

import time

import requests
import json
import pprint
from set_airport_code import set_airports_code_func

def set_airports_code_func(departure_airport, arrival_airport):
my_req = requests.get(f"https://www.travelpayouts.com/widgets_suggest_params?q="
f"Из%20{departure_airport}%20в%20{arrival_airport}")
data = json.loads(my_req.text)
departure_airport_iata = data['origin']['iata']
arrival_airport_iata = data['destination']['iata']
return [departure_airport_iata, arrival_airport_iata]

departure_airport = 'Москва'
arrival_airport = 'Санкт-Петербург'
flight_date = '2024-07-01'

try:
airports_codes = set_airports_code_func(departure_airport, arrival_airport)
print(airports_codes[0])
print(airports_codes[1])
except KeyError as exc:
print('Такого рейса не существует.')

result = requests.get(f'https://api.travelpayouts.com/aviasales/v3/prices_...?'
f'origin={airports_codes[0]}&'
f'destination={airports_codes[1]}&'
f'departure_at={flight_date}&'
f'sorting=price&'
f'direct=false&'
f'currency=rub&'
f'limit=30&'
f'page=1&'
f'one_way=true&'
f'token=526faf5fcd6a0fbfedf9591e5e024')

pprint.pprint(result.text)

Комментарий aviasales.ru по вопросу неполного ответа на направляемый вопрос:
Когда вы используете API поиска авиабилетов в реальном времени, вам приходит ответ от тех же агентств и авиакомпаний, что и на сайте aviasales.ru. Самый распространенный случай, когда ответ меньше — это недостаточная пауза между отправкой запроса и получением результата.

Дело в том, что для получения ответа от всех агентств требуется порядка 30 секунд. Если запросить результат раньше, то он может содержать не все данные.
  • Вопрос задан
  • 134 просмотра
Решения вопроса 1
Mike_Ro
@Mike_Ro Куратор тега Python
Python, JS, WordPress, SEO, Bots, Adversting
Пишу на Python программу для получения через API сайта информации с помощью requests.get()

В этой связи вопрос: как можно увеличить эту паузу???

Никак. requests возвращает исключительно, первый ответ сервера. Попробуйте библиотеку aiohttp или httpx.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@mrfreeman2
Надо изучать документацию API-сервера. Вероятнее всего, в API предусмотрена порционная подгрузка данных.
Что это такое? Вы формируете запрос, который серверу сложно обработать быстро. Сервер быстро форсирует часть ответа, отдает его вам, и у вас + отпадет некий курсор, который нужно использовать для повторного вызова, так сервер поймет, что нужно дополнить предыдущий ответ.
Ответ написан
Vindicar
@Vindicar
RTFM!
Время на формирования ответа сервера определяется самим сервером, ты на него повлиять не можешь.
Если сервер тебе отправляет 10 результатов поиска вместо 30 - значит, либо ты сам запросил только 10, либо в базе есть только 10 подходящих элементов, либо действует какое-нибудь ограничение (для бесплатных пользователей. например?).

В любом случае, без кода говорить не о чем.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы