Junior — Middle
Ποια μέθοδο μπορεί να χρησιμοποιηθεί για την αποτροπή του σφάλματος 500 σε περίπτωση λήξης του χρόνου αναμονής της απάντησης της βάσης δεδομένων;
sobes.tech AI
Απάντηση από AI
Για την αποφυγή του σφάλματος 500 που προκαλείται από λήξη χρόνου αναμονής της απάντησης από τη βάση δεδομένων σε Go, μπορούν να χρησιμοποιηθούν διάφορες προσεγγίσεις:
-
Πλαίσιο με χρονικό όριο — χρησιμοποιήστε
context.WithTimeoutγια τον περιορισμό του χρόνου εκτέλεσης του ερωτήματος στη βάση. -
Πισίνα συνδέσεων — διαμορφώστε σωστά την πισίνα συνδέσεων για να αποφύγετε μπλοκαρίσματα και καθυστερήσεις.
-
Διαχείριση σφαλμάτων — χειριστείτε σωστά τα σφάλματα χρονικού ορίου και επιστρέψτε κατανοητές απαντήσεις στον πελάτη.
Παράδειγμα χρήσης πλαισίου με χρονικό όριο:
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) {
// διαχείριση λήξης χρόνου
} else {
// άλλο σφάλμα
}
}
Αυτή η προσέγγιση βοηθά στην αποφυγή μπλοκαρισμάτων και στον έλεγχο του χρόνου αναμονής για την απάντηση από τη βάση δεδομένων.