Как автоматически перезапустить бота в случае ошибки?
Возможно ли сделать автоматический перезапуск скрипта с ботом в случае ошибки в коде?
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