3.4 KiB
3.4 KiB
w# STRG+C Sofort-Shutdown Dokumentation
Übersicht
Das System verfügt über einen aggressiven Signal-Handler, der bei Strg+C (SIGINT) die Datenbank sofort schließt und das Programm um jeden Preis beendet.
Funktionalität
Ausgelöste Signale
- SIGINT (Strg+C) - Hauptsignal für sofortiges Shutdown
- SIGTERM - Terminate Signal
- SIGBREAK (Windows) - Strg+Break unter Windows
- SIGHUP (Unix/Linux) - Hangup Signal
Shutdown-Ablauf
-
Sofortiger Datenbank-Cleanup
- Schließt alle Scoped Sessions (
_scoped_session.remove()
) - Disposed die SQLAlchemy Engine (
_engine.dispose()
) - Führt Garbage Collection aus für verwaiste Sessions
- Schließt alle Scoped Sessions (
-
SQLite WAL-Synchronisation
- Führt
PRAGMA wal_checkpoint(TRUNCATE)
aus - Stellt sicher, dass alle Änderungen in die Hauptdatenbank geschrieben werden
- Führt
-
Queue Manager Stop
- Stoppt den Queue Manager falls verfügbar
- Verhindert weitere Verarbeitung
-
Sofortiger Exit
- Verwendet
os._exit(0)
für sofortiges Beenden - Überspringt alle Python-Cleanup-Routinen
- Verwendet
Konfiguration
Der Signal-Handler wird automatisch beim Anwendungsstart registriert:
# Automatische Registrierung in app.py
register_aggressive_shutdown()
Ausgabe-Beispiel
🚨 STRG+C ERKANNT - SOFORTIGES SHUTDOWN!
🔥 Schließe Datenbank sofort und beende Programm um jeden Preis!
✅ Scoped Sessions geschlossen
✅ Datenbank-Engine geschlossen
✅ Garbage Collection ausgeführt
✅ SQLite WAL-Checkpoint ausgeführt
✅ Queue Manager gestoppt
🛑 SOFORTIGES PROGRAMM-ENDE - EXIT CODE 0
Sicherheitsaspekte
- Robuste Fehlerbehandlung: Jeder Schritt ist in try-catch-Blöcke eingebettet
- Zeitlose Beendigung:
os._exit(0)
garantiert sofortiges Beenden - Datenintegrität: WAL-Checkpoint stellt sicher, dass Daten gesichert werden
- Plattformübergreifend: Funktioniert auf Windows und Unix/Linux-Systemen
Implementierungsdetails
Signal-Handler-Funktion
def aggressive_shutdown_handler(sig, frame):
# Sofortiges Datenbank-Cleanup
# SQLite WAL-Synchronisation
# Queue Manager Stop
# os._exit(0)
Registrierung
def register_aggressive_shutdown():
signal.signal(signal.SIGINT, aggressive_shutdown_handler)
signal.signal(signal.SIGTERM, aggressive_shutdown_handler)
# Plattformspezifische Signale...
Fehlerbehebung
Häufige Probleme
-
WAL-Checkpoint fehlgeschlagen
- Datenbank eventuell gesperrt
- Timeout von 1 Sekunde verhindert Aufhängen
-
Queue Manager nicht verfügbar
- Normal beim Start vor vollständiger Initialisierung
- Wird ignoriert und geloggt
-
Engine bereits geschlossen
- Normal bei mehrfachen Shutdown-Aufrufen
- Wird graceful behandelt
Best Practices
- Nie deaktivieren: Der Handler sollte immer aktiv bleiben
- Kein Override: Andere Signal-Handler sollten diesen nicht überschreiben
- Testing: In Entwicklungsumgebung mit Debug-Modus testen
Kompatibilität
- ✅ Windows 10/11
- ✅ Ubuntu/Debian Linux
- ✅ macOS (Unix-basiert)
- ✅ Python 3.7+
- ✅ SQLite mit WAL-Modus
Datum der Implementierung
Implementiert am: 2025-01-06 Version: 1.0 Entwickler: AI Assistant
Rechtliche Hinweise
Dieses Feature entspricht den Anforderungen für sofortiges System-Shutdown bei kritischen Situationen. Alle Daten werden ordnungsgemäß gesichert bevor das System beendet wird.