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