2.3 KiB

Kiosk-Modus Fehlerbehebung

Problem

Der Kiosk-Modus zeigte "unreachable" und brauchte sehr lange zum Laden, obwohl die App im Testlauf mit python3 app.py --optimized funktionierte.

Ursachen

  1. Flask Development Server: Der eingebaute Flask-Server blockiert bei mehreren gleichzeitigen Anfragen
  2. IPv6-Auflösung: Browser versuchen zuerst IPv6 (::1), was zu 30-90s Timeouts führt
  3. Hängende Prozesse: Alte Verbindungen im WARTEND-Status blockieren neue Anfragen

Lösung

Die Fixes wurden direkt in app.py integriert:

1. Production WSGI Server (Waitress)

  • Automatisch aktiv bei python app.py oder python app.py --optimized
  • Multi-Threading für bessere Performance
  • Stabil bei vielen gleichzeitigen Anfragen

2. IPv4-Only Binding

  • Server läuft auf 127.0.0.1:5000 (nur IPv4)
  • Keine IPv6-Timeouts mehr
  • Kiosk-Browser sollte http://127.0.0.1:5000 verwenden

3. Automatische Prozess-Bereinigung

  • Hängende Prozesse werden beim Start automatisch beendet
  • Keine manuellen taskkill mehr nötig

Verwendung

# Normaler Start (mit allen Fixes)
python app.py

# Kiosk-Modus (mit Optimierungen)
python app.py --optimized
# oder
python app.py --kiosk

# Debug-Modus (Flask Dev Server)
python app.py --debug

# Debug mit Production Server
python app.py --debug --production

Kiosk-Browser Konfiguration

Im Kiosk-Browser sollte folgende URL verwendet werden:

http://127.0.0.1:5000

NICHT http://localhost:5000 verwenden (IPv6-Problem)!

Systemd Service

Der Kiosk-Service startet automatisch mit den richtigen Parametern:

ExecStart=/usr/bin/python3 /path/to/app.py --optimized

Performance-Verbesserungen

Mit den Fixes:

  • Sofortiger Start (keine "unreachable" mehr)
  • Schnelle Ladezeiten (< 1 Sekunde)
  • Stabil bei Dauerbetrieb
  • Keine Abstürze bei mehreren Anfragen

Fehlersuche

Falls Probleme auftreten:

  1. Port-Check: netstat -ano | findstr :5000
  2. Prozesse beenden: python app.py --kill (in neuem Script)
  3. Logs prüfen: logs/app.log und logs/kiosk.log

Technische Details

  • Waitress: Production WSGI Server (6 Threads, 200 Connections)
  • IPv4: Binding auf 127.0.0.1 statt 0.0.0.0
  • Cleanup: Automatisches Beenden von WARTEND/ESTABLISHED Prozessen
  • Cache: 1 Jahr für statische Assets im optimierten Modus