watchdog thread

This commit is contained in:
dries.k
2022-01-29 17:40:15 +01:00
parent 28a8912528
commit 2236a9687d
4 changed files with 32 additions and 0 deletions

View File

@@ -198,6 +198,9 @@ class GotifyClient(GotifySession):
self.listener.reset_wait_time() self.listener.reset_wait_time()
self.listener.stop() self.listener.stop()
def is_listening(self) -> bool:
return self.listener.running
""" """
Health Health
""" """

View File

@@ -1,4 +1,5 @@
import json import json
import logging
import time import time
import websocket import websocket
@@ -57,14 +58,17 @@ class Listener(QtCore.QThread):
self.closed.emit(close_status_code, close_msg) self.closed.emit(close_status_code, close_msg)
def stop(self): def stop(self):
logger.debug("Listener: stopping.")
self.ws.close() self.ws.close()
self.running = False self.running = False
def run(self): def run(self):
self.running = True self.running = True
logger.debug(f"Listener: waiting {self.wait_time} seconds before connecting.")
try: try:
time.sleep(self.wait_time) time.sleep(self.wait_time)
self.ws.run_forever() self.ws.run_forever()
finally: finally:
logger.debug("Listener: stopped.")
self.running = False self.running = False

View File

@@ -15,6 +15,7 @@ from gotify_tray.tasks import (
GetApplicationMessagesTask, GetApplicationMessagesTask,
GetApplicationsTask, GetApplicationsTask,
GetMessagesTask, GetMessagesTask,
ServerConnectionWatchdogTask,
) )
from gotify_tray.utils import verify_server from gotify_tray.utils import verify_server
from PyQt6 import QtCore, QtGui, QtWidgets from PyQt6 import QtCore, QtGui, QtWidgets
@@ -112,6 +113,10 @@ class MainWindow(QtWidgets.QMainWindow):
closed_callback=self.listener_closed_callback, closed_callback=self.listener_closed_callback,
) )
self.watchdog = ServerConnectionWatchdogTask(self.gotify_client)
self.watchdog.closed.connect(lambda: self.listener_closed_callback(None, None))
self.watchdog.start()
self.link_callbacks() self.link_callbacks()
self.show() self.show()

View File

@@ -1,9 +1,11 @@
import abc import abc
import logging import logging
import time
from PyQt6 import QtCore from PyQt6 import QtCore
from PyQt6.QtCore import pyqtSignal from PyQt6.QtCore import pyqtSignal
from gotify_tray.gotify.api import GotifyClient
from gotify_tray.gotify.models import GotifyVersionModel from gotify_tray.gotify.models import GotifyVersionModel
from . import gotify from . import gotify
@@ -154,3 +156,21 @@ class VerifyServerInfoTask(BaseTask):
self.incorrect_url.emit() self.incorrect_url.emit()
except Exception as e: except Exception as e:
self.incorrect_url.emit() self.incorrect_url.emit()
class ServerConnectionWatchdogTask(BaseTask):
closed = pyqtSignal()
def __init__(self, gotify_client: GotifyClient):
super(ServerConnectionWatchdogTask, self).__init__()
self.gotify_client = gotify_client
self.interval = 60
def task(self):
while True:
time.sleep(self.interval)
if not self.gotify_client.is_listening():
self.closed.emit()
logger.debug(
f"ServerConnectionWatchdogTask: gotify_client is not listening"
)