Return partial search results before proxy timeout
build-push / docker (push) Successful in 4m26s

This commit is contained in:
AI Assistant
2026-03-16 15:17:25 +09:00
parent f5d03627be
commit 4133b9cd4d
5 changed files with 61 additions and 11 deletions
+11
View File
@@ -91,6 +91,10 @@ func GeminiCandidateLimit(total int) int {
}
func EvaluateAllCandidatesWithGemini(service *GeminiService, query string, ranked []SearchResult) ([]AIRecommendation, GeminiBatchStats, error) {
return EvaluateAllCandidatesWithGeminiWithDeadline(service, query, ranked, time.Time{})
}
func EvaluateAllCandidatesWithGeminiWithDeadline(service *GeminiService, query string, ranked []SearchResult, deadline time.Time) ([]AIRecommendation, GeminiBatchStats, error) {
const chunkSize = 8
const maxConcurrentBatches = 2
if service == nil {
@@ -135,6 +139,13 @@ func EvaluateAllCandidatesWithGemini(service *GeminiService, query string, ranke
wg.Add(1)
go func(batchIndex int, candidates []SearchResult) {
defer wg.Done()
if !deadline.IsZero() && time.Now().After(deadline) {
results[batchIndex] = batchResult{
index: batchIndex,
err: fmt.Errorf("skipped gemini batch due to deadline"),
}
return
}
sem <- struct{}{}
defer func() { <-sem }()
recommended, err := service.Recommend(query, candidates)