Приветствую, господа! Суть в следующем - есть API практически безальтернативное, т.к. это API банка, с которым работают клиенты. Все необходимые запросы ведутся по крону. Всё бы хорошо, но иногда оно настолько тупит, что выходим по таймауту. Очень важно, чтобы запросы выполнялись строго по расписанию, плюс-минус пара минут. Если запускаю в ручном режиме и получаю таймаут, и сразу же отправляю этот же запрос, то в подавляющем большинстве случаев запрос проходит нормально. Была бы проблема со своими скриптами, так тут бы выход нашёл, но как научить крон перезапускать задачу, если происходит такая ситуация? P.S. На вопрос, мол что это за банк, который не может наладить нормальную работу API? Так ответ простой - я сам ох*евший.
выставляй тайм аут запроса на 3 секунды например, если запрос не удачный, то инициализируй его повторно
тикет заведите. Не думайте что в банках работают менее ленивые разработчики . В любом случае ответ лучше у сапорта получить как в такой ситуации действовать. Таймаут то всегда можно выставить.
Спасибо. Даже не знал, что задания крон можно с таймаутом запускать (может кому в будущем пригодится). Обязательно опробую.
Эту возможность обеспечивает не крон, а команда /bin/timeout, которая по существу не имеет никакого отношения к крону.
Возникает резонный вопрос нахрена. Не проще в скрипте проверять ответ, ставить слип и долбить снова ?
Не проще и вообще не катит. Идёт запрос к апи и пока этот сценарий не отработает, дальше не сдвинемся. А если ответа так и не дождёмся, то таймаут и ни о каком слипе уже речи быть не может. К тому же там "система нипель": 1. Базовая авторизация (она же открывает сессию) 2. Авторизация в бизнесс-аккаунт 3. Получение необходимых данных 4. Теперь отрабатывает мой код 5. Запрос на закрытие сессии Получается, как минимум, четыре запроса к API