🎉 Improved backend structure & added utility modules 🎨📚
This commit is contained in:
@@ -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):
|
||||
|
Reference in New Issue
Block a user