Arresto Grazioso
L'arresto grazioso (Graceful Shutdown) si riferisce al processo in cui, durante lo spegnimento di un server, non vengono immediatamente terminate tutte le connessioni. Invece, il server interrompe prima l'accettazione di nuove richieste, concedendo alle richieste esistenti il tempo necessario per completare l'elaborazione prima di chiudere il servizio. Questo approccio evita l'interruzione brusca delle richieste, migliorando così l'esperienza utente e l'affidabilità del sistema.
Salvo fornisce supporto per l'arresto grazioso tramite il metodo handle del Server, che recupera l'handle del server, seguito dalla chiamata al metodo stop_graceful per implementare lo spegnimento. Dopo aver invocato questo metodo, il server:
- Interrompe l'accettazione di nuove richieste di connessione
- Attende il completamento dell'elaborazione delle richieste esistenti
- Chiude forzatamente eventuali connessioni rimanenti dopo un timeout specificato (se fornito)
Ecco un semplice esempio:
Nell'esempio sopra:
server.handle()recupera l'handle del server, che può essere utilizzato per controllare il ciclo di vita del serverhandle.stop_graceful(None)avvia il processo di arresto grazioso, doveNoneindica che non è impostato alcun timeout, il che significa che il server attenderà indefinitamente il completamento di tutte le richieste- Per impostare un timeout, è possibile passare
Some(Duration), dopo il quale eventuali connessioni rimanenti verranno chiuse forzatamente
Questo approccio è particolarmente adatto per applicazioni distribuite in ambienti containerizzati o su piattaforme cloud, nonché per scenari che richiedono aggiornamenti a caldo per garantire che le richieste non vengano interrotte inaspettatamente.