Перейти к содержимому

GetData возвращает данные из getter, страхуя кэшом в случае ошибки. Проблема: getter может отвечать очень долго. Задача:

go · concurrencyWildberries / WB - 3 (Команда отзывов)3 кв 2025не решено

GetData возвращает данные из getter, страхуя кэшом в случае ошибки. Проблема: getter может отвечать очень долго. Задача: в случае ответа дольше timeout отдавать кэш, и правильно обработать кейс, когда getter всегда отвечает долго.

var cacheStore sync.Map
const timeout = time.Second
func GetData(key string, getter func(k string) (any, error)) (any, error) {
data, err := getter(key)
if err == nil {
cacheStore.Store(key, data)
return data, nil
}
fmt.Printf("Getter result err: %s ", err)
if data, ok := cacheStore.Load(key); ok {
return data, nil
}
return nil, err
}

Источник: Wildberries / WB - 3 (Команда отзывов) · 3 кв 2025

← (код без описания) · Все задачи · Go · Провести ревью кода. →