📚 Improved backend structure & error handling (#123) 🖥️🔧
This commit is contained in:
@@ -385,12 +385,42 @@ def start_queue_manager():
|
||||
return manager
|
||||
|
||||
def stop_queue_manager():
|
||||
"""Stoppt den globalen Queue-Manager."""
|
||||
"""Stoppt den globalen Queue-Manager definitiv und sicher."""
|
||||
global _queue_manager_instance
|
||||
with _queue_manager_lock:
|
||||
if _queue_manager_instance:
|
||||
_queue_manager_instance.stop()
|
||||
_queue_manager_instance = None
|
||||
try:
|
||||
queue_logger.info("🔄 Stoppe Queue-Manager...")
|
||||
|
||||
# Shutdown-Event setzen
|
||||
_queue_manager_instance.shutdown_event.set()
|
||||
|
||||
# Monitor-Thread beenden
|
||||
if (_queue_manager_instance.monitor_thread and
|
||||
_queue_manager_instance.monitor_thread.is_alive()):
|
||||
|
||||
queue_logger.info("⏳ Warte auf Monitor-Thread...")
|
||||
_queue_manager_instance.monitor_thread.join(timeout=5.0)
|
||||
|
||||
# Falls Thread nicht beendet wurde, forciere Beendigung
|
||||
if _queue_manager_instance.monitor_thread.is_alive():
|
||||
queue_logger.warning("⚠️ Monitor-Thread reagiert nicht - forciere Beendigung")
|
||||
# Thread als Daemon markieren für automatische Beendigung
|
||||
_queue_manager_instance.monitor_thread.daemon = True
|
||||
|
||||
# Status auf gestoppt setzen
|
||||
_queue_manager_instance.is_running = False
|
||||
|
||||
# Explizit stop() aufrufen
|
||||
_queue_manager_instance.stop()
|
||||
|
||||
queue_logger.info("✅ Queue-Manager erfolgreich gestoppt")
|
||||
|
||||
except Exception as e:
|
||||
queue_logger.error(f"❌ Fehler beim Stoppen des Queue-Managers: {str(e)}")
|
||||
finally:
|
||||
# Instanz definitiv auf None setzen
|
||||
_queue_manager_instance = None
|
||||
|
||||
# Automatisches Cleanup bei Prozess-Ende registrieren
|
||||
atexit.register(stop_queue_manager)
|
||||
Reference in New Issue
Block a user