#stack · дневник проектов

Почему боты падают — и как сделать чтобы вставали сами

Почему боты падают — и как сделать чтобы вставали сами

У меня крутится с десяток ботов на разных серверах. Раньше я узнавал что бот упал от клиента: «а чего не отвечает?». Сейчас не узнаю — потому что они падают, но сами встают, и я даже не замечаю. Расскажу что для этого нужно, человеческим языком.

Бот почти никогда не живёт один. Рядом база данных, иногда ещё пара служб. И вот первая беда: перезагрузился сервер — всё стартует одновременно, бот лезет к базе, а она ещё не успела проснуться. Бот падает. Его перезапускают — база всё ещё не готова — он снова падает. Получается петля, в которой он бьётся головой о стену. Лечится тем, что боту говорят: не стартуй, пока база реально не готова отвечать. Не «запущена» — а именно готова, это разные вещи.

Вторая беда — бот просто не переживает сбой или ребут сервера и тихо остаётся лежать. Тут одна строчка настройки со смыслом: «упал — подними обратно сам; но если я остановил тебя руками — не воскресай». С ней бот сам встаёт после любой перезагрузки, а я сплю спокойно.

Третья — данные. Хранилище легко настроить так, что после очередного обновления база окажется пустой или с битыми правами. Я один раз так потерял вечер, выясняя куда делись данные — оказалось, лежали не там, где я думал. Поэтому данные всегда живут в отдельном, «правильном» месте, которое переживает любую пересборку.

Три вещи: дождись готовности базы, включи авто-подъём, правильно храни данные. Звучит банально, настраивается за полчаса — и закрывает почти все причины, по которым боты в малом бизнесе «вдруг перестали работать».

Это дневник инженера автоматизации

Такие разборы выходят 6 раз в неделю в моём Telegram-канале — кейсы, цифры и грабли из реальных проектов, без воды и курсов.

Читать каналили забрать чек-лист «5 автоматизаций» →
← Async простыми словами: главная ошибкаОдин разработчик против студии →