fix(phase-3): enable circuit breaker for streaming requests
This commit is contained in:
@@ -50,9 +50,13 @@ func (cbp *CircuitBreakerProvider) ChatCompletion(ctx context.Context, req *mode
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (cbp *CircuitBreakerProvider) ChatCompletionStream(ctx context.Context, req *models.UnifiedRequest) (<-chan *models.ChatCompletionStreamResponse, error) {
|
func (cbp *CircuitBreakerProvider) ChatCompletionStream(ctx context.Context, req *models.UnifiedRequest) (<-chan *models.ChatCompletionStreamResponse, error) {
|
||||||
// Circuit breaker for streaming is tricky. We'll just call the provider directly.
|
result, err := cbp.cb.Execute(func() (interface{}, error) {
|
||||||
// Future: Implement a way to track stream failures in the circuit breaker.
|
return cbp.provider.ChatCompletionStream(ctx, req)
|
||||||
return cbp.provider.ChatCompletionStream(ctx, req)
|
})
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return result.(<-chan *models.ChatCompletionStreamResponse), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (cbp *CircuitBreakerProvider) ImageGeneration(ctx context.Context, req *models.ImageGenerationRequest) (*models.ImageGenerationResponse, error) {
|
func (cbp *CircuitBreakerProvider) ImageGeneration(ctx context.Context, req *models.ImageGenerationRequest) (*models.ImageGenerationResponse, error) {
|
||||||
@@ -76,6 +80,11 @@ func (cbp *CircuitBreakerProvider) Responses(ctx context.Context, req *models.Re
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (cbp *CircuitBreakerProvider) ResponsesStream(ctx context.Context, req *models.ResponsesRequest) (<-chan *models.ResponsesStreamChunk, error) {
|
func (cbp *CircuitBreakerProvider) ResponsesStream(ctx context.Context, req *models.ResponsesRequest) (<-chan *models.ResponsesStreamChunk, error) {
|
||||||
// Circuit breaker passthrough for streaming (same pattern as ChatCompletionStream)
|
result, err := cbp.cb.Execute(func() (interface{}, error) {
|
||||||
return cbp.provider.ResponsesStream(ctx, req)
|
return cbp.provider.ResponsesStream(ctx, req)
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return result.(<-chan *models.ResponsesStreamChunk), nil
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user