Thread event to stop inactivity WD

This commit is contained in:
Eden Kirin
2023-05-11 20:01:33 +02:00
parent 78c3286c17
commit b56071e2c7

View File

@ -2,7 +2,7 @@ import asyncio
import datetime import datetime
import logging import logging
import time import time
from threading import Thread from threading import Thread, Event
from hopper.models.player import PlayerList from hopper.models.player import PlayerList
from hopper.ws_server import WSServer from hopper.ws_server import WSServer
@ -15,13 +15,14 @@ class InactivityWatchdog(Thread):
) -> None: ) -> None:
self.players = players self.players = players
self.ws_server = ws_server self.ws_server = ws_server
self.stopped = False self.stop_event = Event()
super().__init__(daemon=True) super().__init__(daemon=True)
def run(self) -> None: def run(self) -> None:
logging.info("Starting inactivity watchdog") logging.info("Starting inactivity watchdog")
while not self.stopped: while not self.stop_event.is_set():
self.cleanup_players() self.cleanup_players()
if not self.stop_event.is_set():
time.sleep(settings.inacivity_watchdog.TICK_INTERVAL) time.sleep(settings.inacivity_watchdog.TICK_INTERVAL)
def cleanup_players(self) -> None: def cleanup_players(self) -> None:
@ -64,4 +65,4 @@ class InactivityWatchdog(Thread):
asyncio.run(self.ws_server.send_game_dump()) asyncio.run(self.ws_server.send_game_dump())
def stop(self) -> None: def stop(self) -> None:
self.stopped = True self.stop_event.set()