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ů:
-
Kontekst s časovým limitem — použijte
context.WithTimeoutk omezení doby provádění dotazu do databáze. -
Pool připojení — správně nakonfigurujte pool připojení, abyste předešli zablokování a zpožděním.
-
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.