Sobes.tech
Junior — Middle

Jaké metody lze použít k prevenci chyby 500 v případě vypršení časového limitu odpovědi databáze?

sobes.tech AI

Odpověď od AI

Abyste předešli chybě 500 způsobené vypršením časového limitu na odpověď z databáze v Go, lze použít několik přístupů:

  1. Kontekst s časovým limitem — použijte context.WithTimeout k omezení doby provádění dotazu do databáze.

  2. Pool připojení — správně nakonfigurujte pool připojení, abyste předešli zablokování a zpožděním.

  3. Zpracování chyb — správně zacházejte s chybami časového limitu a vracejte srozumitelné odpovědi klientovi.

Příklad použití kontextu s časovým limitem:

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) {
        // zpracování časového limitu
    } else {
        // jiná chyba
    }
}

Tento přístup pomáhá vyhnout se zaseknutí a kontrolovat dobu čekání na odpověď z databáze.