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() self.listener.start()
def opened_callback(self, user_callback: Callable[[], None] = None): def opened_callback(self, user_callback: Callable[[], None] = None):
self.listener.reset_wait_time()
if user_callback: if user_callback:
user_callback() user_callback()
def reconnect(self, increase_wait_time: bool = True): def reconnect(self):
if increase_wait_time: if not self.is_listening():
self.listener.increase_wait_time() self.listener.start()
self.listener.start() self.reset_wait_time()
def stop(self, reset_wait: bool = False): def stop(self, reset_wait: bool = False):
if reset_wait: if reset_wait:
self.listener.reset_wait_time() self.reset_wait_time()
self.listener.stop() self.listener.stop()
def is_listening(self) -> bool: def is_listening(self) -> bool:
return self.listener.running 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 Health
""" """

View File

@@ -68,10 +68,7 @@ class Listener(QtCore.QThread):
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)
self.ws.run_forever() self.ws.run_forever()
finally: finally:
logger.debug("Listener: stopped.") logger.debug("Listener: stopped.")

View File

@@ -16,6 +16,7 @@ from gotify_tray.tasks import (
GetApplicationMessagesTask, GetApplicationMessagesTask,
GetMessagesTask, GetMessagesTask,
ServerConnectionWatchdogTask, ServerConnectionWatchdogTask,
SleepTask,
) )
from gotify_tray.utils import get_abs_path, verify_server from gotify_tray.utils import get_abs_path, verify_server
from PyQt6 import QtCore, QtGui, QtWidgets from PyQt6 import QtCore, QtGui, QtWidgets
@@ -53,7 +54,7 @@ def init_logger(logger: logging.Logger):
os.mkdir(logdir) os.mkdir(logdir)
logging.basicConfig( logging.basicConfig(
filename=os.path.join(logdir, f"{title}.log"), 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.main_window.set_connecting()
self.tray.set_icon_error() self.tray.set_icon_error()
if not self.shutting_down: 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): def reconnect_callback(self):
if not self.gotify_client.is_listening(): if not self.gotify_client.is_listening():
self.gotify_client.listener.reset_wait_time() self.gotify_client.listener.reset_wait_time()
self.gotify_client.reconnect()
else: else:
self.gotify_client.stop(reset_wait=True) self.gotify_client.stop(reset_wait=True)
self.gotify_client.reconnect(increase_wait_time=False)
def insert_message( def insert_message(
self, self,

View File

@@ -175,3 +175,12 @@ class ServerConnectionWatchdogTask(BaseTask):
logger.debug( logger.debug(
"ServerConnectionWatchdogTask: gotify_client is not listening" "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)