Thread event to stop inactivity WD
This commit is contained in:
@ -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,14 +15,15 @@ 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()
|
||||||
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:
|
def cleanup_players(self) -> None:
|
||||||
now = datetime.datetime.now()
|
now = datetime.datetime.now()
|
||||||
@ -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()
|
||||||
|
|||||||
Reference in New Issue
Block a user