fromozuzhouzzz
Deploy grok2api v3.0.11 to HF Spaces
f1dd159
Raw
History Blame Contribute Delete
1.32 kB
package gateway
import (
"context"
"time"
"github.com/chenyme/grok2api/backend/internal/pkg/perfmetrics"
)
const (
finalizationHealthBudget = 750 * time.Millisecond
finalizationOwnershipBudget = 1500 * time.Millisecond
finalizationQuotaBudget = time.Second
finalizationAuditBudget = 3 * time.Second
finalizationMetadataBudget = 500 * time.Millisecond
)
type finalizationBudget struct {
deadline time.Time
operation string
provider string
}
func newFinalizationBudget(operation, provider string) finalizationBudget {
return finalizationBudget{
deadline: time.Now().Add(finalizationTimeout),
operation: operation,
provider: provider,
}
}
func (b finalizationBudget) run(stage string, limit time.Duration, action func(context.Context) error) error {
started := time.Now()
deadline := b.deadline
if candidate := started.Add(limit); candidate.Before(deadline) {
deadline = candidate
}
ctx, cancel := context.WithDeadline(context.Background(), deadline)
err := action(ctx)
cancel()
outcome := "success"
if err != nil {
outcome = "failed"
}
perfmetrics.Default.ObserveDuration("finalization_stage_duration_us", perfmetrics.Labels{
Subsystem: "gateway", Operation: b.operation, Provider: b.provider, Stage: stage, Outcome: outcome,
}, time.Since(started))
return err
}