Split AI service worker task queues
All checks were successful
CI / test (push) Successful in 15s
Build and Deploy / build-and-deploy (push) Successful in 27s

This commit is contained in:
Grendgi
2026-06-08 15:57:38 +03:00
parent 33317cf20d
commit 039bcdb2b2
4 changed files with 109 additions and 28 deletions

View File

@@ -23,17 +23,19 @@ const (
)
type Worker struct {
store *store.Store
llm *llm.Client
transcriber *transcription.Client
workerID string
modelProfile string
pollInterval time.Duration
claimLimit int
leaseTimeout time.Duration
store *store.Store
llm *llm.Client
transcriber *transcription.Client
workerID string
modelProfile string
taskTypes []string
modelProfiles []string
pollInterval time.Duration
claimLimit int
leaseTimeout time.Duration
}
func New(store *store.Store, llmClient *llm.Client, transcriber *transcription.Client, workerID, modelProfile string, pollInterval, leaseTimeout time.Duration, claimLimit int) *Worker {
func New(store *store.Store, llmClient *llm.Client, transcriber *transcription.Client, workerID, modelProfile string, taskTypes, modelProfiles []string, pollInterval, leaseTimeout time.Duration, claimLimit int) *Worker {
if pollInterval <= 0 {
pollInterval = 2 * time.Second
}
@@ -46,15 +48,20 @@ func New(store *store.Store, llmClient *llm.Client, transcriber *transcription.C
if strings.TrimSpace(workerID) == "" {
workerID = "ai-service-worker"
}
if len(modelProfiles) == 0 {
modelProfiles = []string{modelProfile, TranscriptionProfile}
}
return &Worker{
store: store,
llm: llmClient,
transcriber: transcriber,
workerID: workerID,
modelProfile: modelProfile,
pollInterval: pollInterval,
claimLimit: claimLimit,
leaseTimeout: leaseTimeout,
store: store,
llm: llmClient,
transcriber: transcriber,
workerID: workerID,
modelProfile: modelProfile,
taskTypes: taskTypes,
modelProfiles: modelProfiles,
pollInterval: pollInterval,
claimLimit: claimLimit,
leaseTimeout: leaseTimeout,
}
}
@@ -79,8 +86,8 @@ func (w *Worker) tick(ctx context.Context) {
}
jobs, err := w.store.ClaimJobs(ctx, model.ClaimJobs{
WorkerID: w.workerID,
TaskTypes: nil,
ModelProfiles: []string{w.modelProfile, TranscriptionProfile},
TaskTypes: w.taskTypes,
ModelProfiles: w.modelProfiles,
Limit: w.claimLimit,
})
if err != nil {