Сообщение о проблеме
Час назад поступил звонок из отдела доставки. Коллега сообщил, что 5 дней не создаются пропуска для водителей, которые отвозят товары на склады Wildberries, и приходится генерировать документы вручную.
Текущий срок действия API-ключа на ВБ составляет 6 месяцев, или 180 дней.
Параметры API-протокола часто изменяются, действия РКН вызывают нестабильность сетевых соединений. Поэтому невозможно сразу сказать, что вызывало ошибку. Разработчики решили проверить логи и параметры методов API-интеграции с маркетплейсом, чтобы выяснить причину.
Замена молчаливого логирования оповещением
На первом же шаге при анализе логов выяснилось, что пять дней назад истек срок действия API-ключа, поэтому запросы завершались ошибкой 401 Unauthorized. Единственное действие, которое срабатывало в коде при ответе со статусом кроме 200 ОК, — запись лога стандартной функцией error_log
. В критических участках кода программисты настроили отправку писем, но не предусмотрели, что ответ со статусом 401 иногда становится таким же важным местом; мало ли какой запрос вернул статус 4хх: ошибка сети, ошибка сервера маркета или другая причина, на каждый случай email-уведомление не настроишь на небольшом проекте. Оказалось, что «протухший» ключ остался «неважной» проблемой и код только сопроводил событие записью в лог.
После проверки стандартное логирование ошибочных запросов функцией error_log()
, которая без других аргументов только записывает информацию об ошибке в журнал, в методе request()
заменили вызовом функции trigger_error()
с уровнем ошибки E_USER_WARNING, если код ответа не совпадает с кодом 200. Плагин Error Monitor & Notifier при загрузке регистрирует свой обработчик ошибок, который кроме перехвата пользовательских ошибок и записи логов сообщает о сбое. Поэтому теперь разработчики или владелец сайта сразу получат уведомление, если запрос методом request()
вернет код кроме двухсотого, при условии, что в настройках плагина вместе с оповещениями об ошибках уровня предупреждения включили уведомления на эл. почту или в Телеграм. Аналогичное однострочное изменение внесли в методы сетевых запросов при взаимодействии с другими торговыми площадками.
Теперь о просроченном ключе поступит мгновенное уведомление. Разработчики решили, что лучше получить оповещение о неважном ответе с кодом 400 или информацию об аналогичных провальных запросах, чем пропустить срок истечения API-ключа и отключение связанных операций. Плюсом стало и то, что не потребуется настраивать отдельные напоминания в планировщике смартфона или ежедневно проверять в лог-файле записи о четырехсотых ошибках.