Graceful Shutdown
Graceful Shutdown bezeichnet den Prozess, bei dem ein Server beim Herunterfahren nicht sofort alle Verbindungen beendet. Stattdessen stoppt er zunächst die Annahme neuer Anfragen und gewährt bestehenden Anfragen ausreichend Zeit, ihre Verarbeitung abzuschließen, bevor der Dienst geschlossen wird. Dieser Ansatz verhindert ein abruptes Abbrechen von Anfragen und verbessert dadurch die Benutzererfahrung und Systemzuverlässigkeit.
Salvo unterstützt Graceful Shutdown über die handle-Methode des Server, die den Server-Handle abruft, gefolgt vom Aufruf der stop_graceful-Methode zur Implementierung des Herunterfahrens. Nach dem Aufruf dieser Methode führt der Server folgende Schritte aus:
- Stoppt die Annahme neuer Verbindungsanfragen
- Wartet auf den Abschluss der Verarbeitung bestehender Anfragen
- Erzwingt das Schließen verbleibender Verbindungen nach einem festgelegten Timeout (falls angegeben)
Hier ein einfaches Beispiel:
Im obigen Beispiel:
server.handle()ruft den Server-Handle ab, der zur Steuerung des Server-Lebenszyklus verwendet werden kannhandle.stop_graceful(None)initiiert den Graceful-Shutdown-Prozess, wobeiNoneangibt, dass kein Timeout gesetzt ist – der Server wartet unbegrenzt auf den Abschluss aller Anfragen- Um ein Timeout zu setzen, kann
Some(Duration)übergeben werden; danach werden verbleibende Verbindungen erzwungen geschlossen
Dieser Ansatz eignet sich besonders für Anwendungen in Container-Umgebungen oder auf Cloud-Plattformen sowie für Szenarien mit Hot Updates, um sicherzustellen, dass Anfragen nicht unerwartet unterbrochen werden.