Как автоматически перезапустить бота в случае ошибки?

Возможно ли сделать автоматический перезапуск скрипта с ботом в случае ошибки в коде?

telebot.apihelper.ApiException: A request to the Telegram API was unsuccessful. The server returned HTTP 409 Conflict. Response body:
[b'{"ok":false,"error_code":409,"description":"Conflict: terminated by other getUpdates request; make sure that only one bot instance is running"}']

Пытался использовать следующий код, но так и не понял как он работает. Можете примерно объяснить?

while True:
    try:
        bot.polling(none_stop=True)

    except Exception as e:
        logger.error(e)  # или просто print(e) если у вас логгера нет,
        # или import traceback; traceback.print_exc() для печати полной инфы
        time.sleep(15)

Ответы (1 шт):

Автор решения: D. Violet
systemd – cистемный менеджер, демон инициализации других демонов в Linux.

Проще говоря, systemd запустит бота и будет перезапускать его в случае падения.

Установим systemd, если отсутствует:

apt-get install systemd

Создадим файл bot.service с таким содержанием в /etc/systemd/system:

[Unit]
Description=Telegram bot %name%
After=syslog.target
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/usr/local/bin/bot  # or other path
ExecStart=/usr/bin/python3 /usr/local/bin/bot/bot.py  # or other path
RestartSec=10
Restart=always

[Install]
WantedBy=multi-user.target

в консоли выполним:

systemctl daemon-reload
systemctl enable bot
systemctl start bot
systemctl status bot
→ Ссылка