Junior — Middle
Kokias metodas galima naudoti siekiant išvengti 500 klaidos, jei duomenų bazės atsako laikas pasibaigia?
sobes.tech AI
Atsakymas iš AI
Siekiant išvengti 500 klaidos, kurią sukelia laiko limitas, pasibaigęs laukiant atsakymo iš duomenų bazės Go kalboje, galima naudoti keletą požiūrių:
-
Kontekstas su laiko limitu — naudokite
context.WithTimeout, kad apribotumėte užklausos vykdymo laiką. -
Ryšių baseinas — tinkamai sukonfigūruokite ryšių baseiną, kad išvengtumėte užblokavimų ir vėlavimų.
-
Klaidų tvarkymas — tinkamai tvarkykite laiko limitą viršijančias klaidas ir grąžinkite suprantamus atsakymus klientui.
Pavyzdys, kaip naudoti kontekstą su laiko limitu:
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) {
// laiko limitas viršytas
} else {
// kita klaida
}
}
Šis požiūris padeda išvengti užblokavimų ir kontroliuoti laukimo laiką atsakymui iš duomenų bazės.