Вступить в клуб →
средняявопросREST API и интеграции

Запрос к партнёрскому CRM без таймаутов повесил воркеров

Фоновая задача отправляет лид в партнёрский CRM:

$response = $this->http->post('https://crm.partner.example/api/leads', [
    'json' => $lead,
    // таймауты не заданы
]);

Партнёр начал отвечать за 60+ секунд. Все воркеры очереди оказались заняты, очередь выросла до десятков тысяч задач, отправка писем и уведомлений встала.

Что верно?

  • Такие вызовы нужно делать синхронно в HTTP-запросе пользователя: тогда очередь не пострадает, а ожидание увидит только один клиент, который сам решит, повторить ему отправку или отложить
  • Достаточно добавить воркеров: очередь разгребётся сама, как только их станет больше, и медленный партнёр перестанет влиять на остальные задачи — это дешевле, чем менять код интеграции
  • Любому внешнему вызову задают таймауты на соединение и на чтение, повторы делают ограниченным числом попыток с нарастающей паузой, а падающую интеграцию изолируют в отдельную очередь
  • Повторять запрос нужно немедленно и без пауз, пока партнёр не ответит: иначе лид будет потерян, а сами повторы почти ничего не стоят по ресурсам приложения

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела