From cd6800636f8677d790fa1909722ad526d83ebd91 Mon Sep 17 00:00:00 2001 From: inso <insomniak.fr@gmaiL.com> Date: Thu, 30 Nov 2017 22:47:55 +0100 Subject: [PATCH] Run sakia in parallel for multi currency --- src/sakia/app.py | 2 -- src/sakia/helpers.py | 8 ++++++-- src/sakia/main.py | 19 ++++++++++--------- 3 files changed, 16 insertions(+), 13 deletions(-) diff --git a/src/sakia/app.py b/src/sakia/app.py index a6654f94..997b88a4 100644 --- a/src/sakia/app.py +++ b/src/sakia/app.py @@ -88,9 +88,7 @@ class Application(QObject): app_data = AppDataFile.in_config_path(options.config_path).load_or_init() app = cls(qapp, loop, options, app_data, None, None, options.currency, None) #app.set_proxy() - app.get_last_version() app.load_profile(options.profile) - app.start_coroutines() app.documents_service = DocumentsService.instanciate(app) app.switch_language() return app diff --git a/src/sakia/helpers.py b/src/sakia/helpers.py index d7a0fd4a..ad1c10c6 100644 --- a/src/sakia/helpers.py +++ b/src/sakia/helpers.py @@ -1,4 +1,5 @@ import re +import hashlib from PyQt5.QtCore import QSharedMemory from PyQt5.QtWidgets import QApplication @@ -17,8 +18,11 @@ def detect_non_printable(data): return True -def single_instance_lock(): - sharedMemory = QSharedMemory("77rWEV37vupNhQs6ktDREthqSciyV77OYrqPBSwV755JFIhl9iOywB7G5DkAKU8Y") +def single_instance_lock(currency): + key = hashlib.sha256(currency.encode('utf-8') + + "77rWEV37vupNhQs6ktDREthqSciyV77OYrqPBSwV755JFIhl9iOywB7G5DkAKU8Y".encode('utf-8'))\ + .hexdigest() + sharedMemory = QSharedMemory(key) if sharedMemory.attach(QSharedMemory.ReadOnly): sharedMemory.detach() return None diff --git a/src/sakia/main.py b/src/sakia/main.py index 599cbdfc..c94962f0 100755 --- a/src/sakia/main.py +++ b/src/sakia/main.py @@ -82,15 +82,6 @@ if __name__ == '__main__': signal.signal(signal.SIGINT, signal.SIG_DFL) sakia = QApplication(sys.argv) - lock = single_instance_lock() - if not lock: - lock = single_instance_lock() - if not lock: - QMessageBox.critical(None, "Sakia", - "Sakia is already running.") - - sys.exit(1) - sys.excepthook = exception_handler sakia.setStyle('Fusion') @@ -100,7 +91,17 @@ if __name__ == '__main__': with loop: app = Application.startup(sys.argv, sakia, loop) + + lock = single_instance_lock(app.currency) + if not lock: + lock = single_instance_lock(app.currency) + if not lock: + QMessageBox.critical(None, "Sakia", + "Sakia is already running.") + + sys.exit(1) app.start_coroutines() + app.get_last_version() keep_trying = True while not app.blockchain_service.initialized(): try: -- GitLab