Back to questions
Касперский
Senior
4
Можно ли сразу поставить reject объявлению, если быстрый сервис уже вернул reject, не дожидаясь медленного ML-сервиса антифрода?
Companies where asked
Answer from AI
sobes.tech AI
Да, можно сразу отклонить (reject) запрос, если быстрый сервис антифрода вернул отказ, не дожидаясь результата медленного ML-сервиса.
Это распространённый подход для оптимизации времени отклика и ресурсов:
- Быстрый сервис выполняет первичную проверку и при явном отказе сразу возвращает reject.
- Медленный ML-сервис может продолжать обработку асинхронно для логирования, обучения или последующего анализа.
В Go это можно реализовать с помощью каналов и контекстов, отменяя ожидание результата медленного сервиса при получении отказа от быстрого.
Пример:
fastResult := make(chan bool)
slowResult := make(chan bool)
// Запускаем быстрый сервис
go func() {
fastResult <- fastAntiFraudCheck()
}()
// Запускаем медленный ML-сервис
go func() {
slowResult <- slowMLCheck()
}()
select {
case fastOk := <-fastResult:
if !fastOk {
// reject сразу
return reject()
}
// ждем slowResult или продолжаем
case slowOk := <-slowResult:
if !slowOk {
return reject()
}
}
Таким образом, можно повысить отзывчивость системы, не дожидаясь долгих проверок, если уже есть основание для отказа.