mirror of
https://github.com/memohai/Memoh.git
synced 2026-04-27 07:16:19 +09:00
feat(agent): relax provider http timeouts (#348)
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"time"
|
||||
)
|
||||
|
||||
const (
|
||||
DefaultProviderRequestTimeout = 2 * time.Minute
|
||||
DefaultProviderProbeTimeout = 60 * time.Second
|
||||
DefaultProviderTLSHandshakeTimeout = 30 * time.Second
|
||||
)
|
||||
|
||||
var defaultProviderTransport = newDefaultProviderTransport()
|
||||
|
||||
// NewProviderHTTPClient returns an HTTP client for model/provider traffic.
|
||||
// When timeout is zero or negative, the caller is expected to enforce limits
|
||||
// via context deadlines, which keeps streaming responses unbounded by the
|
||||
// client's global timeout while still using the relaxed TLS handshake window.
|
||||
func NewProviderHTTPClient(timeout time.Duration) *http.Client {
|
||||
client := &http.Client{Transport: defaultProviderTransport}
|
||||
if timeout > 0 {
|
||||
client.Timeout = timeout
|
||||
}
|
||||
return client
|
||||
}
|
||||
|
||||
func newDefaultProviderTransport() *http.Transport {
|
||||
base, ok := http.DefaultTransport.(*http.Transport)
|
||||
if !ok {
|
||||
return &http.Transport{TLSHandshakeTimeout: DefaultProviderTLSHandshakeTimeout}
|
||||
}
|
||||
|
||||
transport := base.Clone()
|
||||
if transport.TLSHandshakeTimeout < DefaultProviderTLSHandshakeTimeout {
|
||||
transport.TLSHandshakeTimeout = DefaultProviderTLSHandshakeTimeout
|
||||
}
|
||||
return transport
|
||||
}
|
||||
Reference in New Issue
Block a user