Junior — Middle
Датабазадан жооп алуу убактысынын бүтүшү учурунда 500 ката болуудан алдын алуу үчүн кайсы ыкмаларды колдонсо болот?
sobes.tech AI
AIден жооп
Go-да маалыматтар базасынан жооп алуу үчүн күтүүнүн мөөнөтү өтүп кеткендиктен келип чыккан 500 катасын алдын алуу үчүн бир нече ыкмалар колдонулушу мүмкүн:
-
Time out менен контекст —
context.WithTimeoutколдонуп, маалыматтар базасына суроо берүү убактысын чектөө. -
Кошулмалар пулу — туура конфигурациялоо пулу, блокторду жана кечиктирүүлөрдү алдын алуу үчүн.
-
Ката иштетүү — убакыттын өтүшү каталарын туура иштетип, кардарга түшүнүктүү жоопторду берүү.
Time out менен контекст колдонуу мисалы:
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 {
// башка каталар
}
}
Бул ыкма блокторду алдын алууга жана базадан жооп күтүүнүн убактысын көзөмөлдөөгө жардам берет.