У меня есть бот Telegram, работающий некоторое время на коробке DO. И как ни странно, без каких-либо изменений в коде или сервере бот перестал работать с ('Connection aborted.', error(104, 'Connection reset by peer'))
сгенерированными исключениями.
После расследования я обнаружил:
- GET-запросы к другим службам работают нормально.
- Исключение возникает при попытке выполнить следующий блок кода.
...
type_action = "https://api.telegram.org/bot{}/sendChatAction?chat_id={}&action=typing".format(telegram_bot_key, telegram_group_id)
send_message = "https://api.telegram.org/bot{}/sendMessage?chat_id={}&text={}&parse_mode=html&reply_to_message_id={}".format(telegram_bot_key, telegram_group_id, t_message, message_id)
try:
requests.get(type_action)
time.sleep(5)
requests.get(send_message)
except Exception as e:
print(e)
...
Пока что я устраню неполадкиэти:
- Проверено, что бот не ограничен в скорости, делая запрос локально.
- Сервер исправен без ограничений ресурсов или любых подобных инцидентов.
- Попытка
pip install "requests[security]"
в соответствии с предложением this answer. - Установка более короткого сообщения, отправляемого -
test
. - Проверено, что IP-адреса не заблокированычерез брандмауэр.
Странно, что все GET-запросы к другим URL-адресам API работают. И тот же URL-адрес Telegram работает при локальном запросе. Но когда запрос происходит из вышеуказанного кодового блока, он выдает ошибку.
Я в тупике.