Sobes.tech
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:

  1. Contesto con timeout — usare context.WithTimeout per limitare il tempo di esecuzione della query.

  2. Pool di connessioni — configurare correttamente il pool di connessioni per evitare blocchi e ritardi.

  3. 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.