🎉 Improved backend structure & added utility modules 🎨📚

This commit is contained in:
2025-06-01 00:26:29 +02:00
parent 91548dfb0e
commit 9e1719df4d
27 changed files with 750 additions and 60 deletions

View File

@@ -25,12 +25,28 @@ from concurrent.futures import ThreadPoolExecutor
# WebSocket-Support
try:
from flask_socketio import SocketIO, emit, join_room, leave_room, disconnect
from eventlet import wsgi, listen
import eventlet
# Eventlet separat importieren für bessere Fehlerbehandlung
try:
from eventlet import wsgi, listen
import eventlet
EVENTLET_AVAILABLE = True
except (ImportError, AttributeError) as e:
# Eventlet nicht verfügbar oder nicht kompatibel (z.B. Python 3.13)
print(f"⚠️ Eventlet nicht verfügbar: {e}")
print("🔄 Fallback auf standard threading mode für WebSocket")
EVENTLET_AVAILABLE = False
eventlet = None
wsgi = None
listen = None
WEBSOCKET_AVAILABLE = True
except ImportError:
except ImportError as e:
print(f"⚠️ Flask-SocketIO nicht verfügbar: {e}")
print("📡 Dashboard läuft ohne Real-time Updates")
WEBSOCKET_AVAILABLE = False
EVENTLET_AVAILABLE = False
SocketIO = None
eventlet = None
from flask import request, session, current_app
from flask_login import current_user
@@ -122,16 +138,24 @@ class DashboardManager:
logger.warning("WebSocket-Funktionalität nicht verfügbar. Flask-SocketIO installieren.")
return None
# Bestimme den async_mode basierend auf verfügbaren Bibliotheken
if EVENTLET_AVAILABLE:
async_mode = 'eventlet'
logger.info("Dashboard WebSocket-Server wird mit eventlet initialisiert")
else:
async_mode = 'threading'
logger.info("Dashboard WebSocket-Server wird mit threading initialisiert (eventlet-Fallback)")
self.socketio = SocketIO(
app,
cors_allowed_origins=cors_allowed_origins,
logger=False,
engineio_logger=False,
async_mode='eventlet'
async_mode=async_mode
)
self._setup_socket_handlers()
logger.info("Dashboard WebSocket-Server initialisiert")
logger.info(f"Dashboard WebSocket-Server initialisiert (async_mode: {async_mode})")
return self.socketio
def _setup_socket_handlers(self):