К содержанию
SerpJet Документация Войти
Разделы
  1. Документация
  2. Публичный API доставки

Polling, тайм-аут, повтор результата и идемпотентность

Опрашивайте pull-методы по расписанию; пустой ответ не означает конец очереди. Если ответ на result потерялся, повторите тот же запрос с тем же delivery_id — повтор безопасен и не меняет статью.

Проверено
Содержание
  1. Опрос
  2. Порядок обработки
  3. Повтор result
  4. Тайм-ауты

Опрос

  • Опрашивайте /articles/new/pull и /articles/improvements/pull по расписанию, например раз в несколько минут. Чаще, чем раз в несколько секунд, опрашивать не нужно.
  • count: 0 или пустой items не доказывает, что очередь пуста: за один запрос сервис просматривает ограниченную часть большой очереди. Продолжайте опрос.
  • Держитесь в пределах 60 запросов в секунду на ключ.

Порядок обработки

  1. Получите статью.
  2. Сохраните её в CMS по article_identity и дождитесь, пока запись сохранится.
  3. Только после этого отправьте result.

Если CMS не смогла сохранить статью — не отправляйте accepted. Статья придёт снова при следующем опросе.

Повтор result

Если CMS сохранила результат, но не получила HTTP-ответ (тайм-аут, обрыв), повторите тот же запрос с тем же delivery_id:

  • повтор с тем же решением возвращает 200;
  • для accepted адрес должен совпадать с первым подтверждением, или поле можно опустить;
  • повтор не меняет текст, статус статьи, даты и аналитику;
  • article_status и external_url в ответе показывают текущее состояние статьи — после первого подтверждения могли появиться новые версии.

Изменить решение или адрес уже закрытой доставки нельзя: 409 delivery_already_resolved. Для смены адреса есть отдельный PATCH — Справочник публичных методов, параметров, схем и примеров.

Тайм-ауты

  • Ставьте разумный тайм-аут на запросы (например, 30 секунд) и повторяйте с паузой при сетевых ошибках и 429.
  • Повторять pull безопасно: до result снимок остаётся в очереди.

Не нашли ответ? Напишите в поддержку из панели — укажите проект и что вы видите на экране.