Короткий ответ Нужно явно передавать параметр timeout в вызов requests.get/requests.post и оборачивать вызов в try/except, обрабатывая requests.exceptions.Timeout и requests.exceptions.RequestException отдельно от бизнес-логики успешного ответа. Как это работает подробнее без явного timeout запрос может "висеть" бесконечно, если внешний сервис не отвечает, занимая поток/соединение и потенциально истощая пул ресурсов приложения. timeout можно задать как одно число (на соединение и чтение вместе) или tuple (connect_timeout, read_timeout). Пример кода Что использовать на практике Рекомендация. таймаут стоит выбирать исходя из SLA внешнего сервиса и допустимой задержки для вашего пользователя, а не ставить "на глаз" — слишком маленький таймаут даст ложные обрывы под нагрузкой, слишком большой — удержит ресурсы при реальном отказе внешнего сервиса. При таймауте нужно решить: вернуть пользователю ошибку, попробовать retry, или отдать fallback-данные — выбор зависит от критичности операции. Подводные камни Риски. вы