TGViewer
DataEng DataEng @dataeng · 4.39K subscribers
Post #474 5.95K
Про таймауты и внешние API

Хорошей практикой при работе с внешними сервисами я считаю явное указание таймаутов ожидания соединения и ответа от хоста. Такой подход поможет избежать проблем с "зависанием" соединения и, как следствие, блокировкой процесса (для блокирующих соединений). На моей памяти было 2 неприятных кейса. В далёком 2015 я использовал requests для работы с сервисом поиска и бронирования ЖД билетов в Казахстане, по-умолчанию в requests нет таймаута и ожидание может превратиться в бесконечность. Всё было хорошо до тех пор пока у внешнего сервиса не начались проблемы, и он перестал отвечать на запросы. Все worker-процессы ушли в бесконечное ожидание, и мой сервис перестал принимать новые соединения, сайт попросту сломался. Тогда мне потребовалось некоторое время, чтобы понять в чем проблема.

Со второй проблемой я столкнулся неделю назад. Сейчас я разрабатываю веб-сервисы для автоматизации рекламных сетей, активно пользуюсь Facebook Ads. Для работы с маркетинговым сервисом Фейсбука существует библиотека facebook-python-business-sdk. Внимание! Под капотом она использует requests 😉 И у неё нет таймаута по умолчанию. Я наткнулся на те же грабли, когда ФБ стал подтормаживать.

К слову, если вы как и я пользуетесь facebook-python-business-sdk, то таймаут можно установить через инициализацию API-класса:

FacebookAdsApi.init(access_token=access_token, api_version='v13.0', timeout=settings.FACEBOOK_ADS_API_TIMEOUT)

Не наступайте на грабли, ставьте таймауты 😉

Также по теме в ленте увидел пост про патчинг requests: https://adamj.eu/tech/2022/06/23/how-to-patch-requests-to-have-a-default-timeout/
GitHub GitHub - facebook/facebook-python-business-sdk: Python SDK for Meta Marketing APIs Python SDK for Meta Marketing APIs. Contribute to facebook/facebook-python-business-sdk development by creating an account on GitHub.
  • 👍 21
More from @dataeng
  1. Aug 23, 2026Официальная документация по Python теперь доступна на русском языке: https://blog.python.o…
  2. Jul 20, 2026PostgreSQL 18 изнутри Postgres Pro выпустили новую версию книги про устройство PostgreSQL:…
  3. Jul 16, 2026На канале Елизаветы Осетинской вышло интересное интервью с создателем ClickHouse Алексеем…
  4. Apr 30, 2026PostgreSQL 16: Оптимизация запросов 🖥 Вчера случайно заметил, что на Postgres Pro появила…
  5. Apr 29, 2026Эффективно управлять сложностью можно через абстракции. Например, через практики внедрения…
  6. Apr 29, 2026Отказоустойчивость железа достигается через добавление избыточных компонентов, например, в…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →