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 {
        // друга грешка
    }
}

Този подход помага да се избегнат блокировки и да се контролира времето за изчакване на отговора от базата.