From 5a7aa44d6c68c5719defe1f171e547bada6a898d Mon Sep 17 00:00:00 2001 From: Stef Date: Wed, 3 Sep 2025 17:11:02 +0200 Subject: [PATCH] Creates logs when services are pinged --- app.py | 1 - models.py | 6 ++++-- poll_services.py | 16 +++++++--------- 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/app.py b/app.py index f8108ec..423457c 100644 --- a/app.py +++ b/app.py @@ -49,7 +49,6 @@ def favicon(): # Only run if directly running file if __name__ == "__main__": - t = threading.Thread(target=start_async_loop, daemon=True) t.start() diff --git a/models.py b/models.py index 01803a5..7b76ddc 100644 --- a/models.py +++ b/models.py @@ -5,7 +5,7 @@ from typing import Any, Optional class log(db.Model): - id: int = db.Column(db.Integer, primary_key=True) + id: int = db.Column(db.Integer, primary_key=True) # TODO: Switch to UUID dateCreated: datetime = db.Column(db.DateTime, nullable=False, index=True) service_id: int = db.Column( db.Integer, @@ -14,8 +14,10 @@ class log(db.Model): ) ping: Optional[int] = db.Column(db.Integer, nullable=True) - def __init__(self): + def __init__(self, service_id: int, ping: Optional[int]): super().__init__() + self.service_id = service_id + self.ping = ping self.dateCreated = datetime.now(timezone.utc) diff --git a/poll_services.py b/poll_services.py index 2236bbe..d5b0309 100644 --- a/poll_services.py +++ b/poll_services.py @@ -31,7 +31,10 @@ async def check_service(client: aiohttp.ClientSession, s: service) -> log: s.set_error(None) s.set_online(r.status == 200) s.set_status(r.status) - s.set_ping(int((after - before) * 1000)) + if r.status != 200: + s.set_ping(None) + else: + s.set_ping(int((after - before) * 1000)) except aiohttp.ConnectionTimeoutError: s.set_error("Connection Timeout") s.set_online(False) @@ -43,7 +46,7 @@ async def check_service(client: aiohttp.ClientSession, s: service) -> log: s.set_online(False) s.set_status(None) s.set_ping(None) - return log() + return log(service_id=s.id, ping=s.ping) def start_async_loop(): @@ -53,11 +56,6 @@ def start_async_loop(): loop.run_forever() -async def sleepTask(): - await asyncio.sleep(5) - return log() - - async def update_services(loop: asyncio.AbstractEventLoop): print("Starting service updates...") with app.app_context(): @@ -65,10 +63,10 @@ async def update_services(loop: asyncio.AbstractEventLoop): client = aiohttp.ClientSession() while True: session = WorkerSession() + sleeptask = asyncio.create_task(asyncio.sleep(5)) tasks = [check_service(client=client, s=s) for s in services] - tasks.append(sleepTask()) logs = await asyncio.gather(*tasks) - logs = logs[:-1] + await sleeptask try: session.add_all(logs) session.commit()