Задать вопрос

Как запустить Python — Telegram бота чтобы он не крашился из-за ошибок?

Запустил python процесс для бота телеграм.
и он раз в день крашится (процесс завершается) из-за разных ошибок, например:

File "main_bot.py", line 67, in <module>
    bot.polling(none_stop=True, interval=0)
  File "/usr/local/lib/python2.7/dist-packages/telebot/__init__.py", line 192, in polling
    self.__threaded_polling(none_stop, interval, timeout)
  File "/usr/local/lib/python2.7/dist-packages/telebot/__init__.py", line 215, in __threaded_polling
    polling_thread.raise_exceptions()
  File "/usr/local/lib/python2.7/dist-packages/telebot/util.py", line 73, in raise_exceptions
    six.reraise(self.exc_info[0], self.exc_info[1], self.exc_info[2])
  File "/usr/local/lib/python2.7/dist-packages/telebot/util.py", line 54, in run
    task(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/telebot/__init__.py", line 122, in __retrieve_updates
    updates = self.get_updates(offset=(self.last_update_id + 1), timeout=timeout)
  File "/usr/local/lib/python2.7/dist-packages/telebot/__init__.py", line 92, in get_updates
    json_updates = apihelper.get_updates(self.token, offset, limit, timeout)
  File "/usr/local/lib/python2.7/dist-packages/telebot/apihelper.py", line 139, in get_updates
    return _make_request(token, method_url, params=payload)
  File "/usr/local/lib/python2.7/dist-packages/telebot/apihelper.py", line 34, in _make_request
    result = requests.request(method, request_url, params=params, files=files, timeout=(connect_timeout, read_timeout))
  File "/usr/lib/python2.7/dist-packages/requests/api.py", line 49, in request
    return session.request(method=method, url=url, **kwargs)
  File "/usr/lib/python2.7/dist-packages/requests/sessions.py", line 457, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/lib/python2.7/dist-packages/requests/sessions.py", line 569, in send
    r = adapter.send(request, **kwargs)
  File "/usr/lib/python2.7/dist-packages/requests/adapters.py", line 407, in send
    raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', error(101, 'Network is unreachable'))


Можно ли сделать так, чтобы py демон не завершался, либо запускать его автоматически если он вылетит?

Бот запускаю на VPS с Debian так :
bot.polling(none_stop=True, interval=0)

Использую pyTelegramBotAPI
  • Вопрос задан
  • 16327 просмотров
Подписаться 3 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 5
@rll
Я так своего запускаю:

while True:
		try:
			bot.polling(none_stop=True)
		except: 
			print('bolt')
			logging.error('error: {}'.format(sys.exc_info()[0]))
			time.sleep(5)
Ответ написан
Комментировать
Rou1997
@Rou1997
Ну вы даете, "можно ли"! Если у вас такие проблемы, то что же делать нам, бедным, несчастным, голодным от безденежья, программистам TCP/IP, которым начальство велело наладить стабильное, а не простое подключение? :)
Исключение обрабатывайте, или "тупо" создайте фоновый процесс, который бы перезапускал бот, а тестировать этот алгоритм можно путем программного отключения от сети, плюс NetLimiter, хотя думаю, просто отключить сеть вручную будет достаточно, чтобы ботъ низвергнулся съ экскѣпшѣнъ :)
Ответ написан
Комментировать
@asd111
Попробуй так:
try: 
    bot.polling(none_stop=True, interval=0)
except Exception:
    pass

И глянь как обрабатывать Excetion'ы в python pythonicway.com/python-exceptions-handling
https://docs.python.org/3.6/tutorial/errors.html#e...
Ответ написан
Комментировать
@Fractalzombie
Software Engineer
В самом вопросе ответ. Смотри какие эксепшены получаешь и делай try except...
Ответ написан
Комментировать
У вас возможно интернет сессию разрывает раз в день.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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