Интеграции
Ошибка 429: интеграция превышает лимит запросов
Интеграция получает 429: запросов стало слишком много. Разберём, почему быстрые повторы ухудшают ситуацию и как восстановить передачу без потерь.
Что происходит и с чего начать
Внешний сервис ограничивает количество запросов, которое готов принимать за определённое время. Код 429 сообщает о превышении такого ограничения, но точные правила зависят от сервиса и аккаунта. Лимит может быть общим для нескольких процессов сайта. Поэтому увеличение числа обработчиков не обязательно ускорит обмен: они вместе отправят ещё больше запросов. Сначала оцените, какие действия создают нагрузку и сколько данных действительно нужно передавать, а затем настройте темп и порядок повторов.
Что можно проверить самостоятельно
- Запишите время ошибок и действия, которые выполнялись одновременно. Уточните, не добавили ли недавно новые автоматизации, частые проверки статусов или несколько параллельных обработчиков.
- Посмотрите, увеличивается ли очередь и продолжают ли отдельные записи успешно проходить. Не нажимайте повторный запуск полной выгрузки, пока предыдущая ещё работает.
- Проверьте, сообщает ли сервис допустимое время следующей попытки. Передайте специалисту ответ без секретов и актуальные условия лимита вашего подключения, если они доступны в кабинете.
Как понять результаты проверки
Ограничение нужно учитывать на уровне всех источников запросов, которые делят один лимит. Задержка только в одном скрипте не поможет, если остальные продолжают отправку. Некоторые ответы содержат Retry-After — указание, сколько ждать или когда повторить запрос. При его наличии программа должна учитывать это значение. Также важно сохранять прогресс: повторять непереданные записи, а не весь набор заново. Тогда временное ограничение уменьшает скорость обмена, но не превращается в потерю данных и дубли.
Что проверяет разработчик
Для этой части понадобятся доступ к настройкам, журналам ошибок или коду. Её можно передать специалисту вместе с результатами предыдущих шагов.
- Сопоставьте время 429 с количеством запросов и параллельных процессов. Учтите все сайты и фоновые задачи, использующие одни доступы.
- Проверьте заголовки и тело ответа на указания о лимите и ожидании. Не задавайте универсальную паузу без учёта правил сервиса.
- Найдите циклы запросов, повторы после тайм-аута и массовые синхронизации. Один пользовательский клик может запускать десятки одинаковых обращений.
На что обратить внимание
Увеличение числа воркеров способно ухудшить интеграцию: очередь обрабатывается быстрее, но общий лимит внешнего API остаётся прежним. Бесконечные синхронные повторы при этом занимают процессы сайта.
Как исправляют причину
Добавьте общий ограничитель, отложенные повторы с увеличением интервала и учёт Retry-After, если он предоставлен. Сохраняйте прогресс пакетной передачи и не повторяйте уже подтверждённые записи.
Как убедиться, что проблема решена
Смоделируйте ограничение на тестовом окружении. Очередь должна замедлиться, затем продолжить работу без пропущенных заявок и без повторного создания объектов.
После изменения проверьте обмен на привычном объёме, включая одновременные задачи. Очередь должна постепенно сокращаться, а число повторных отказов не расти бесконтрольно. Сверьте отправленные записи с принятыми и убедитесь, что важные события не вытесняются долгой массовой выгрузкой. Результат — предсказуемая передача в пределах доступного лимита, а не обещание убрать ограничения чужого сервиса.