improve manual reconnecting

This commit is contained in:
dries.k
2022-02-17 14:00:31 +01:00
parent 2d08cdd9e7
commit 01738b8411
4 changed files with 30 additions and 12 deletions

View File

@@ -183,23 +183,31 @@ class GotifyClient(GotifySession):
self.listener.start()
def opened_callback(self, user_callback: Callable[[], None] = None):
self.listener.reset_wait_time()
if user_callback:
user_callback()
def reconnect(self, increase_wait_time: bool = True):
if increase_wait_time:
self.listener.increase_wait_time()
self.listener.start()
def reconnect(self):
if not self.is_listening():
self.listener.start()
self.reset_wait_time()
def stop(self, reset_wait: bool = False):
if reset_wait:
self.listener.reset_wait_time()
self.reset_wait_time()
self.listener.stop()
def is_listening(self) -> bool:
return self.listener.running
def increase_wait_time(self):
self.listener.increase_wait_time()
def get_wait_time(self) -> int:
return self.listener.wait_time
def reset_wait_time(self):
self.listener.reset_wait_time()
"""
Health
"""

View File

@@ -68,10 +68,7 @@ class Listener(QtCore.QThread):
def run(self):
self.running = True
logger.debug(f"Listener: waiting {self.wait_time} seconds before connecting.")
try:
time.sleep(self.wait_time)
self.ws.run_forever()
finally:
logger.debug("Listener: stopped.")

View File

@@ -16,6 +16,7 @@ from gotify_tray.tasks import (
GetApplicationMessagesTask,
GetMessagesTask,
ServerConnectionWatchdogTask,
SleepTask,
)
from gotify_tray.utils import get_abs_path, verify_server
from PyQt6 import QtCore, QtGui, QtWidgets
@@ -53,7 +54,7 @@ def init_logger(logger: logging.Logger):
os.mkdir(logdir)
logging.basicConfig(
filename=os.path.join(logdir, f"{title}.log"),
format="%(levelname)s > %(name)s > %(asctime)s > %(message)s",
format="%(levelname)s > %(name)s > %(asctime)s > %(filename)20s:%(lineno)3s - %(funcName)20s() > %(message)s",
)
@@ -131,14 +132,17 @@ class MainApplication(QtWidgets.QApplication):
self.main_window.set_connecting()
self.tray.set_icon_error()
if not self.shutting_down:
self.gotify_client.reconnect()
self.gotify_client.increase_wait_time()
self.sleep_task = SleepTask(self.gotify_client.get_wait_time())
self.sleep_task.finished.connect(self.gotify_client.reconnect)
self.sleep_task.start()
def reconnect_callback(self):
if not self.gotify_client.is_listening():
self.gotify_client.listener.reset_wait_time()
self.gotify_client.reconnect()
else:
self.gotify_client.stop(reset_wait=True)
self.gotify_client.reconnect(increase_wait_time=False)
def insert_message(
self,

View File

@@ -175,3 +175,12 @@ class ServerConnectionWatchdogTask(BaseTask):
logger.debug(
"ServerConnectionWatchdogTask: gotify_client is not listening"
)
class SleepTask(BaseTask):
def __init__(self, secs: int):
super(SleepTask, self).__init__()
self.secs = secs
def task(self):
time.sleep(self.secs)