Junior — Middle
Welche Methoden können verwendet werden, um einen Fehler 500 im Falle eines abgelaufenen Datenbank-Timeouts zu verhindern?
sobes.tech KI
Antwort von AI
Um Fehler 500 aufgrund eines abgelaufenen Wartezeitlimits bei der Antwort der Datenbank in Go zu vermeiden, können mehrere Ansätze verwendet werden:
-
Kontext mit Timeout —
context.WithTimeoutverwenden, um die Ausführungszeit der Datenbankanfrage zu begrenzen. -
Verbindungspool — den Verbindungspool richtig konfigurieren, um Blockierungen und Verzögerungen zu vermeiden.
-
Fehlerbehandlung — Timeout-Fehler korrekt behandeln und verständliche Antworten an den Client zurückgeben.
Beispiel für die Verwendung eines Kontexts mit Timeout:
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) {
// Timeout-Behandlung
} else {
// anderer Fehler
}
}
Dieser Ansatz hilft, Hängungen zu vermeiden und die Wartezeit auf die Antwort der Datenbank zu kontrollieren.