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

  1. Kontekst z limitem czasu — użyj context.WithTimeout, aby ograniczyć czas wykonywania zapytania do bazy.

  2. Pula połączeń — poprawnie skonfiguruj pulę połączeń, aby uniknąć blokad i opóźnień.

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