@wi1ex

Telegram bot перестает отвечать, дело в getupdates, коде или vps?

Написал бота на python3.6, в задачах которого стоит отвечать на команды и параллельно проверять есть ли в задачах упоминание оповестить того или иного пользователя. Запускается бот на хостинге (Ubuntu 16.04 LTS) командой
python3.6 /root/1.3/bot.py >/dev/null 2>/root/1.3/logs/errors.txt &
и в процессах наблюдаю 5 активных bot.py
Использую getUpdates, автоматические оповещения проверяю так:
threading.Thread(target=bot.polling).start()
while True:
	autonotif()
	time.sleep(60)

При запуске бот работает, но через часов 15-20, если написать ему, может не ответить, а в процессах остается только 4 bot.py. Причем оповещения продолжают работать, а сами обновления запросов бот больше не получает. Если завершить процессы и перезапустить бота, появляется ошибка кодировки типа:
Traceback (most recent call last):
...
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 2: ordinal not in range(128)

Exception in thread Thread-1:
Traceback (most recent call last):
...
UnicodeEncodeError: 'ascii' codec can't encode characters in position 35-41: ordinal not in range(128)


Ошибка пропадает только если перезапустить сервер и снова запустить, тогда можно вновь заметить 5 активных процессов бота и через время проблема повторяется. До того, как стал использовать многопоточность для оповещений, данной проблемы не наблюдалось. Но при этом именно она и продолжает работать в случае засыпания бота и остановки одного процесса. Была версия, что ошибка с кодировкой появляется именно из-за невозможности на стороне Telegram получить новый обновленный запрос с моей стороны. Но отчего происходит засыпание - неизвестно.
  • Вопрос задан
  • 1563 просмотра
Пригласить эксперта
Ответы на вопрос 2
@nllm
Похоже что падает из-за кодировки. Приходит запрос от пользователя, где имя, фамилия в кириллице.

На 99% проблема в коде, а не на сторонних сервисах (хостинг, телеграм)
Ответ написан
@Derfirm
Noname Developer.
Я бы советовал вам прикрутить какой-нибудь сентри бесплатный или иной сервис мониторинга. Да и отойти от тредов, "дебажить треды" - то ещё приключение.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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