Обработка ошибок
Кэширование и квоты: Кэширование и мониторинг.
Ошибки платформы (401, 403, 422, 429, 5xx): Обработка ошибок.
Статус рейса
GET /flight_status/{flight_number} возвращает 404, когда рейс не опубликован на сегодня, — а не когда в вашем коде ошибка. Параметра даты нет; для данных табло на конкретный день используйте Расписания.
Поля выхода на посадку, терминала, выдачи багажа и регистрации часто содержат пустые строки ("") — считайте их неизвестными, а не признаком отсутствующей настройки.
Расписания
flights может быть пустым массивом — это допустимое состояние табло. Ключи строк записаны в Title Case (Flight, Time, Status) — ключи в нижнем регистре возвращают undefined.
Расстояние
Возвращает 422, если коды аэропортов не удаётся распознать или координаты выходят за допустимый диапазон.
Брифинг по полёту
Генерация брифинга выполняется медленно (часто 30–90 с) и под нагрузкой может возвращать 503. Выполните одну повторную попытку после короткой задержки (backoff); не засыпайте эндпоинт запросами при каждой перерисовке интерфейса.
Структурированный JSON использует summary, origin_briefing и destination_briefing — а не обёртку sections.
import os
import time
import requests
HEADERS = {
"X-RapidAPI-Key": os.getenv("RAPIDAPI_KEY", "YOUR_RAPIDAPI_KEY"),
"X-RapidAPI-Host": "skylink-api.p.rapidapi.com",
}
BASE = "https://skylink-api.p.rapidapi.com"
def fetch_status(flight: str) -> dict | None:
r = requests.get(f"{BASE}/flight_status/{flight}", headers=HEADERS, timeout=(10, 15))
if r.status_code == 404:
return None
r.raise_for_status()
return r.json()
def fetch_briefing(origin: str, destination: str) -> dict | None:
params = {
"origin": origin,
"destination": destination,
"include_weather": "true",
"include_notams": "true",
"format": "json",
}
for attempt in range(2):
r = requests.get(
f"{BASE}/briefing/flight",
headers=HEADERS,
params=params,
timeout=(10, 90),
)
if r.status_code == 404:
return None
if r.status_code in (502, 503, 504):
if attempt == 0:
time.sleep(8)
continue
return None
r.raise_for_status()
return r.json()
return None
if __name__ == "__main__":
status = fetch_status("BA123")
print("Status:", status["status"] if status else "not found today")
print("Briefing smoke test: see flight-briefing-integration (60–90 s generation time)")Для временных сбоев используйте вспомогательную функцию повторных попыток со страницы Обработка ошибок.
См. также: Статус рейса · Расписания · Расстояние · Брифинг по полёту · Кэширование и мониторинг