diff --git a/src/transform.py b/src/transform.py index 8c8d29a..f3d8d8a 100644 --- a/src/transform.py +++ b/src/transform.py @@ -38,6 +38,11 @@ def set_saxon_worker_pool(pool: Optional["SaxonWorkerPool | SaxonWorkerPoolS9Api logger.info("Saxon-Worker-Pool deaktiviert (Fallback auf subprocess)") +def get_saxon_worker_pool() -> Optional["SaxonWorkerPool | SaxonWorkerPoolS9Api"]: + """Gibt den aktuellen globalen Saxon-Worker-Pool zurück.""" + return _saxon_worker_pool + + def set_fop_worker_pool(pool: Optional["FopWorkerPool"]): """Setzt den globalen FOP-Worker-Pool.""" global _fop_worker_pool @@ -48,6 +53,11 @@ def set_fop_worker_pool(pool: Optional["FopWorkerPool"]): logger.info("FOP-Worker-Pool deaktiviert (Fallback auf subprocess)") +def get_fop_worker_pool() -> Optional["FopWorkerPool"]: + """Gibt den aktuellen globalen FOP-Worker-Pool zurück.""" + return _fop_worker_pool + + class TransformationJob: """ Repräsentiert einen einzelnen Transformations-Job. diff --git a/src/ui/mixins/worker_pool.py b/src/ui/mixins/worker_pool.py index 64147b0..7a85364 100644 --- a/src/ui/mixins/worker_pool.py +++ b/src/ui/mixins/worker_pool.py @@ -10,7 +10,7 @@ import logging from PySide6.QtWidgets import QMessageBox from conf import app_settings, XsltVersion -from transform import TransformationJob, set_saxon_worker_pool +from transform import TransformationJob, get_saxon_worker_pool, set_saxon_worker_pool, get_fop_worker_pool, set_fop_worker_pool from saxon_pool import SaxonWorkerPool from saxon_pool_s9api import SaxonWorkerPoolS9Api @@ -90,12 +90,10 @@ class WorkerPoolMixin: def _shutdown_saxon_worker_pool(self): """Beendet den Saxon-Worker-Pool sauber.""" try: - # Importiere transform um Zugriff auf globalen Pool zu haben - import transform - - if transform._saxon_worker_pool: + pool = get_saxon_worker_pool() + if pool: logger.info("Beende Saxon-Worker-Pool...") - transform._saxon_worker_pool.shutdown() + pool.shutdown() set_saxon_worker_pool(None) logger.info("Saxon-Worker-Pool beendet") @@ -136,7 +134,6 @@ class WorkerPoolMixin: # Importiere FopWorkerPool from fop_pool import FopWorkerPool - from transform import set_fop_worker_pool # Erstelle Worker-Pool num_workers = app_settings.max_workers @@ -165,15 +162,10 @@ class WorkerPoolMixin: def _shutdown_fop_worker_pool(self): """Beendet den FOP-Worker-Pool sauber.""" try: - # Importiere transform um Zugriff auf globalen Pool zu haben - import transform - - if transform._fop_worker_pool: + pool = get_fop_worker_pool() + if pool: logger.info("Beende FOP-Worker-Pool...") - transform._fop_worker_pool.shutdown() - # Importiere set_fop_worker_pool - from transform import set_fop_worker_pool - + pool.shutdown() set_fop_worker_pool(None) logger.info("FOP-Worker-Pool beendet")