📚 Improved backend structure & error handling (#123) 🖥️🔧

This commit is contained in:
2025-05-31 21:56:50 +02:00
parent 8d29b2634a
commit a36c14115a
3 changed files with 520 additions and 91 deletions

View File

@@ -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)