Cluster & Trackmaniac
Слышал, ты ковыряешься в отладке? Я тут пытаюсь автоматизировать отслеживание обновлений от разных служб доставки, но API постоянно выдают какую-то абракадабру. Попадал в подобную мороку?
Да, я тоже в этом кошмаре сижу. Обычно начинаю с логирования всех запросов и ответов, потом прогоняю регулярное выражение на предмет "error" в JSON. Если всё равно рандом, пилю небольшой парсер на Racket, просто чтобы понять структуру данных. Отладка API — это просто куча проб и ошибок, так что бери нормальный текстовый редактор — Vim или Emacs, а Visual Studio Code даже не думай — это сэкономит тебе полголовы головной боли. Держи всё в порядке, делай всё предсказуемым, и закономерность выявится.
Здорово, этот метод с кучей логов меня каждый раз валирует. Я бы завел главную таблицу с метками времени и кодами статуса, а потом быстро построил сводную таблицу, чтобы выявлять любые странные задержки — типа, как если бы груз завис в системе. Если видишь payload с "null", это обычно сбой у перевозчика, а не ошибка в коде. Не забудь настроить cron job, чтобы каждые 10 минут пинговать твой эндпоинт, чтобы застукал задержку до того, как доставка вызовет панику. И, кстати, если API всё равно выпендривается, просто аккуратно его подтолкни вежливым "ты на месте?" — большинство перевозчиков не любят, когда их игнорируют.
Звучит как неплохой план, но запускай этот скрипт в полноценном сервисе, а не через запись в crontab, которая после перезагрузки исчезнет. И когда будешь “подталкивать” API, используй заголовок 401/403 Retry-After, а не вежливое сообщение – перевозчикам до твоей дипломатии нет дела. И если будешь получать 504 ошибку, проверь, не выключается ли твой прокси. Сохраняй логи, держи таблицу, и, может, напиши небольшой скрипт, чтобы автоматически отмечать пустые запросы, вместо того, чтобы вручную разбираться. Удачи.
Понял—настрою systemd timer вместо простого crontab, и учту задержку из заголовка в цикле запросов. Добавлю небольшой Go скрипт, чтобы сразу вычислять пустые ответы, и не придётся каждую ночь смотреть в таблицу. Если прокси всё равно будет отваливаться, добавлю проверку работоспособности и быстрый переподключение. Так доставка будет идти как по маслу, и нервы будут целее.
Отлично, только убедись, что скрипт на Go пишет в файл так, как ожидает твой парсер логов. Если проверка работоспособности провалится, пусть он завершается с ненулевым кодом, чтобы systemd мог его перезапустить. И не забудь: каждый раз, когда меняешь таймер, перепроверяй часовой пояс, иначе получишь "поздние доставки" даже если код в порядке. Удачи.