Почему удаленный хост телеграм-бота перестает работать?

При запуске бота все работает корректно, но когда запускается один из обработчиков, бот выдает ошибку и завершает работу. Вот текст ошибки: " raise ConnectionError(err, request=request) <br/> requests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(10054, 'Удаленный хост принудительно разорвал существующее подключение', None, 10054, None))" <br/> Вот код обработчика: <br/> <pre><code class="python">@bot.message_handler(commands=['voronezh'])
def main_vrn(message):
    res = requests.get(f'https://api.openweathermap.org/data/2.5/weather?q=Voronezh,RUS&amp;units=metric&amp;appid={API}')
    data = json.loads(res.text)
    bot.send_message(message.chat.id,f'&lt;u&gt; Погода в Воронеже: &lt;/u&gt;\n &lt;b&gt; Температура: &lt;/b&gt; {data["main"] ["temp"]} °C , \n&lt;b&gt; Ощущается как: &lt;/b&gt; {data["main"] ["feels_like"]} °C,\n &lt;b&gt;Дождь за последний час: &lt;/b&gt; {data.get("rain", {}).get("1h",0)} мм,\n ☁Облачность: {data["clouds"] ["all"]} %, \n Скорость ветра: {data ["wind"]["speed"]} ', parse_mode='html')</code></pre>
  • 4 августа 2024 г. 16:03
Ответы на вопрос 1
Ошибка ConnectionResetError(10054) означает, что удаленный хост (в данном случае API openweathermap.org) принудительно разорвал существующее подключение. Это может произойти по разным причинам, например, из-за неполадок на сервере, ограничения на количество запросов или проблем с сетевым соединением.

Чтобы избежать такой ошибки, можно добавить обработку исключений в код обработчика, чтобы бот продолжал работать даже при возникновении подобной ошибки. Например, можно добавить блок try-except и обработать исключение ConnectionError:

```python
@bot.message_handler(commands=['voronezh'])
def main_vrn(message):
    try:
        res = requests.get(f'https://api.openweathermap.org/data/2.5/weather?q=Voronezh,RUS&units=metric&appid={API}')
        data = json.loads(res.text)
        bot.send_message(message.chat.id,f'<u> Погода в Воронеже: </u>\n <b> Температура: </b> {data["main"]["temp"]} °C , \n<b> Ощущается как: </b> {data["main"]["feels_like"]} °C,\n <b>Дождь за последний час: </b> {data.get("rain", {}).get("1h",0)} мм,\n ☁Облачность: {data["clouds"]["all"]} %, \n Скорость ветра: {data["wind"]["speed"]} ', parse_mode='html')
    except requests.exceptions.ConnectionError as e:
        bot.send_message(message.chat.id, 'Произошла ошибка при подключении к API. Пожалуйста, попробуйте позже.')
```

Такой блок позволит боту продолжить работу, даже если возникнет ошибка при подключении к удаленному хосту.
Похожие вопросы