From 877fce9b7a75d3503a99b7b6820d66c8fe9b0679 Mon Sep 17 00:00:00 2001 From: Stef Date: Fri, 29 Aug 2025 23:18:36 +0200 Subject: [PATCH] Added a questionable ping and changed HTTP head to get --- mem/__init__.py | 19 ++++++++++++++++--- poll_services.py | 7 ++++++- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/mem/__init__.py b/mem/__init__.py index c10745f..644b1cb 100644 --- a/mem/__init__.py +++ b/mem/__init__.py @@ -7,6 +7,7 @@ class service: online: bool public: bool error: Optional[str] + ping: Optional[int] def __init__(self, url: str = "", public: bool = True): self.url = url @@ -15,6 +16,7 @@ class service: self.online = False self.status = None self.error = None + self.ping = None def to_dict(self) -> dict[str, Any]: return { @@ -23,6 +25,7 @@ class service: "public": self.public, "online": self.online, "error": self.error, + "ping": self.ping, } def set_status(self, status: Optional[int]): @@ -34,9 +37,19 @@ class service: def set_error(self, s: Optional[str]): self.error = s + def set_ping(self, n: Optional[int]): + self.ping = n + services: list[service] = [ - service("https://git.ihatemen.uk"), - service("https://plex.ihatemen.uk"), - service("https://truenas.local", False), + service("https://git.ihatemen.uk/"), + service("https://plex.ihatemen.uk/"), + service("https://truenas.local/", False), + service("https://cloud.ihatemen.uk/"), + service("https://request.ihatemen.uk/"), + service("https://id.ihatemen.uk/"), + service("http://tautulli.local", False), + service("https://transmission.local", False), + service("https://vault.ihatemen.uk"), + service("https://nginx.local", False), ] diff --git a/poll_services.py b/poll_services.py index 9c823c9..f1ab086 100644 --- a/poll_services.py +++ b/poll_services.py @@ -2,24 +2,29 @@ from mem import services, service import httpx import urllib3 import asyncio +import time urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) async def check_service(client: httpx.AsyncClient, s: service): try: - r = await client.head( + before = time.perf_counter() + r = await client.get( url=s.url, follow_redirects=True, timeout=1, ) + after = time.perf_counter() s.set_error(None) s.set_online(r.status_code == 200) s.set_status(r.status_code) + s.set_ping(int((after - before) * 1000)) except httpx.HTTPError as e: s.set_error(str(e)) s.set_online(False) s.set_status(None) + s.set_ping(None) def start_async_loop():