Junior — Middle
Jakie metody można zastosować, aby zapobiec błędowi 500 w przypadku wygaśnięcia czasu oczekiwania na odpowiedź z bazy danych?
sobes.tech AI
Odpowiedź od AI
Aby zapobiec błędowi 500 spowodowanemu przekroczeniem limitu czasu oczekiwania na odpowiedź z bazy danych w Go, można zastosować kilka podejść:
-
Kontekst z limitem czasu — użyj
context.WithTimeout, aby ograniczyć czas wykonywania zapytania do bazy. -
Pula połączeń — poprawnie skonfiguruj pulę połączeń, aby uniknąć blokad i opóźnień.
-
Obsługa błędów — poprawnie obsługuj błędy przekroczenia limitu czasu i zwracaj zrozumiałe odpowiedzi klientowi.
Przykład użycia kontekstu z limitem czasu:
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) {
// obsługa przekroczenia limitu czasu
} else {
// inny błąd
}
}
Ten sposób pomaga uniknąć zawieszania się i kontrolować czas oczekiwania na odpowiedź z bazy.