From cee49f313f4320ce01d113880b96d74fe2e61fea Mon Sep 17 00:00:00 2001 From: Eugenio Panadero Date: Sun, 30 Jul 2017 11:14:28 +0200 Subject: [PATCH] Retry set_webhook up to three times, reduce timeout to 5s again (#8716) --- homeassistant/components/telegram_bot/webhooks.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/telegram_bot/webhooks.py b/homeassistant/components/telegram_bot/webhooks.py index 30d81930b44..055f68884a6 100644 --- a/homeassistant/components/telegram_bot/webhooks.py +++ b/homeassistant/components/telegram_bot/webhooks.py @@ -6,7 +6,6 @@ https://home-assistant.io/components/telegram_bot.webhooks/ """ import asyncio import datetime as dt -from functools import partial from ipaddress import ip_network import logging @@ -70,9 +69,18 @@ def async_setup_platform(hass, config): _LOGGER.error("Invalid telegram webhook %s must be https", handler_url) return False + def _try_to_set_webhook(): + retry_num = 0 + while retry_num < 3: + try: + return bot.setWebhook(handler_url, timeout=5) + except telegram.error.TimedOut: + retry_num += 1 + _LOGGER.warning("Timeout trying to set webhook (retry #%d)", + retry_num) + if current_status and current_status['url'] != handler_url: - result = yield from hass.async_add_job( - partial(bot.setWebhook, handler_url, timeout=10)) + result = yield from hass.async_add_job(_try_to_set_webhook) if result: _LOGGER.info("Set new telegram webhook %s", handler_url) else: