feat: Add exponential retry for api connection

This commit is contained in:
sinavir 2024-12-17 10:27:53 +01:00
parent 880f444ff7
commit 7dcf83dc4a
No known key found for this signature in database

View file

@ -1,9 +1,11 @@
import json import json
import logging import logging
import sys import sys
import time
import click import click
import click_log import click_log
import uptime_kuma_api
from uptime_kuma_api import UptimeKumaApi from uptime_kuma_api import UptimeKumaApi
from .hydratation import hydrate_http_probes from .hydratation import hydrate_http_probes
@ -14,6 +16,20 @@ logger = logging.getLogger(__name__)
click_log.basic_config() click_log.basic_config()
def get_api_with_retries(host, retries=5):
delay = 5
while True:
try:
return UptimeKumaApi(host)
except uptime_kuma_api.exceptions.UptimeKumaException:
logger.warn(f"Error while connectiong, retrying in {delay}s.")
if retries == 0:
raise
retries -= 1
time.sleep(delay)
delay *= 4
@click.group() @click.group()
def cli(): def cli():
pass pass
@ -76,7 +92,8 @@ def apply_json(
logger.debug( logger.debug(
f"Flags value:\n - scrape_http_keywords: {scrape_http_keywords}\n - no_autocreate_tags: {no_autocreate_tags}\n - keywords_fallback: {keywords_fallback}" f"Flags value:\n - scrape_http_keywords: {scrape_http_keywords}\n - no_autocreate_tags: {no_autocreate_tags}\n - keywords_fallback: {keywords_fallback}"
) )
with UptimeKumaApi(host) as api:
with get_api_with_retries(host) as api:
logging.debug("Reading json") logging.debug("Reading json")
data = json.load(file) data = json.load(file)
logging.debug("Parsing json") logging.debug("Parsing json")