Junior — Middle
Quali metodi possono essere utilizzati per prevenire l'errore 500 in caso di scadenza del timeout della risposta del database?
sobes.tech AI
Risposta dell'AI
Per evitare l'errore 500 causato dal timeout della risposta del database in Go, si possono adottare diversi approcci:
-
Contesto con timeout — usare
context.WithTimeoutper limitare il tempo di esecuzione della query. -
Pool di connessioni — configurare correttamente il pool di connessioni per evitare blocchi e ritardi.
-
Gestione degli errori — gestire correttamente gli errori di timeout e restituire risposte comprensibili al client.
Esempio di utilizzo di un contesto con timeout:
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()
err := db.QueryRowContext(ctx, "SELECT ...").Scan(&result)
if err != nil {
if errors.Is(err, context.DeadlineExceeded) {
// gestione del timeout
} else {
// altro errore
}
}
Questo approccio aiuta a evitare blocchi e a controllare il tempo di attesa della risposta del database.