Sobes.tech
Junior — Middle

Ποια μέθοδο μπορεί να χρησιμοποιηθεί για την αποτροπή του σφάλματος 500 σε περίπτωση λήξης του χρόνου αναμονής της απάντησης της βάσης δεδομένων;

sobes.tech AI

Απάντηση από AI

Για την αποφυγή του σφάλματος 500 που προκαλείται από λήξη χρόνου αναμονής της απάντησης από τη βάση δεδομένων σε Go, μπορούν να χρησιμοποιηθούν διάφορες προσεγγίσεις:

  1. Πλαίσιο με χρονικό όριο — χρησιμοποιήστε context.WithTimeout για τον περιορισμό του χρόνου εκτέλεσης του ερωτήματος στη βάση.

  2. Πισίνα συνδέσεων — διαμορφώστε σωστά την πισίνα συνδέσεων για να αποφύγετε μπλοκαρίσματα και καθυστερήσεις.

  3. Διαχείριση σφαλμάτων — χειριστείτε σωστά τα σφάλματα χρονικού ορίου και επιστρέψτε κατανοητές απαντήσεις στον πελάτη.

Παράδειγμα χρήσης πλαισίου με χρονικό όριο:

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 {
        // άλλο σφάλμα
    }
}

Αυτή η προσέγγιση βοηθά στην αποφυγή μπλοκαρισμάτων και στον έλεγχο του χρόνου αναμονής για την απάντηση από τη βάση δεδομένων.