From f759a86538295d49750172cafd9e4944cffb6791 Mon Sep 17 00:00:00 2001 From: Karel van Klink <karel.vanklink@geant.org> Date: Mon, 12 Aug 2024 09:51:38 +0200 Subject: [PATCH] Have LibreNMS client perform multiple retires when a connection times out --- gso/services/librenms_client.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/gso/services/librenms_client.py b/gso/services/librenms_client.py index a4857b9d..2e04a866 100644 --- a/gso/services/librenms_client.py +++ b/gso/services/librenms_client.py @@ -7,6 +7,7 @@ from typing import Any, Literal import requests from requests import HTTPError, Response +from requests.adapters import HTTPAdapter from gso.settings import load_oss_params from gso.utils.helpers import SNMPVersion @@ -26,6 +27,7 @@ class LibreNMSClient: self.snmp_config = config.SNMP self.session = requests.Session() + self.session.mount("https://", HTTPAdapter(max_retries=5)) self.session.headers.update({ "User-Agent": f"geant-service-orchestrator/{metadata.version("geant-service-orchestrator")}", "Accept": "application/json", @@ -34,11 +36,11 @@ class LibreNMSClient: }) def _send_request( - self, method: Literal["GET", "POST", "PUT", "DELETE"], endpoint: str, data: dict[str, Any] | None = None + self, method: Literal["GET", "POST", "PUT", "DELETE"], endpoint: str, data: dict[str, Any] | None = None ) -> Response: url = self.base_url + endpoint logger.debug("LibreNMS - Sending request", extra={"method": method, "endpoint": url, "form_data": data}) - result = self.session.request(method, url, json=data) + result = self.session.request(method, url, json=data, timeout=(0.5, 75)) logger.debug("LibreNMS - Received response", extra=result.__dict__) return result -- GitLab