booomerang
@booomerang
Разработчик крутизны

Как организовать отказоустойчивость бота (long running process)?

Привет. Есть telegram bot. Нужно его повесить куда-то онлайн и организовать отказоустойчивость. Как это правильно сделать? Дайте пожалуйста линки на хорошие туториалы. На данный момент стек бота: PHP + Redis.
По сути бот - это long-running process, либо он сам делает запросы на api.telegram.org, либо слушает новые апйдеты, с помощью webhook фичи. Если этот процесс упадет, то и сам бот понятно реквесты от юзера не будет обрабатывать. Нужно организовать отказоустойчивость, чтобы либо этот процесс сам себя поднимал (раньше использовал такую утилиту как supervisord для этого) либо, чтобы автоматически запускался второй процесс с ботом и уже он обрабатывал реквесты. Я не знаю, как это делается в современном мире. Best practices линки были бы очень полезны.
Так же интересует доп. фичи, такие как уведомеления в случае отказа одной из подсистем, например Redis'а и сбор, обработка и вывод логов куда-то (Elasticsearch + Logstash?).

Спасибо.
  • Вопрос задан
  • 269 просмотров
Пригласить эксперта
Ответы на вопрос 1
@rPman
Ваш бот обычный процесс cli php? какие проблемы, запускать его с помощью простой команды
while(true);do php main.php;sleep 1;done
Будет бесконечно пытаться запустить php main.php с паузой между запусками 1 секунду.

Само собой запускать можно из любого другого приложения на другом языке программирования, хоть том же php.

Озаботьтесь о записи логов и рассылке сообщений после каждого падения (или например превышении их количества за некоторый период, или при особых сообщениях об ошибке и прочее прочее) чтобы вы как адимнистратор знали что происходит, а то вдруг приложение будет завершаться сразу после запуска, например из-за синтаксической ошибке в конфигурационном файле.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы