algorithm/eas/client.go (95 lines of code) (raw):
package eas
import (
"net"
"net/http"
"time"
"github.com/alibaba/pairec/v2/algorithm/response"
)
var easClient *http.Client
func init() {
tr := &http.Transport{
DialContext: (&net.Dialer{
Timeout: 100 * time.Millisecond, // 100ms
KeepAlive: 5 * time.Minute,
}).DialContext,
MaxIdleConnsPerHost: 200,
MaxIdleConns: 200,
IdleConnTimeout: 90 * time.Second,
TLSHandshakeTimeout: 10 * time.Second,
ExpectContinueTimeout: 10 * time.Second,
}
easClient = &http.Client{Transport: tr}
}
type IEasRequest interface {
Invoke(requestData interface{}) (body interface{}, err error)
GetResponseFunc() response.ResponseFunc
}
type EasRequest struct {
serviceName string
auth string
url string
timeout time.Duration
responseFunc response.ResponseFunc
responseFuncName string
}
func (r *EasRequest) SetUrl(url string) {
r.url = url
}
func (r *EasRequest) SetServiceName(name string) {
r.serviceName = name
}
func (r *EasRequest) SetAuth(auth string) {
r.auth = auth
}
func (r *EasRequest) SetTimeout(timeout int) {
if timeout <= 0 {
r.timeout = 100 * time.Millisecond
} else {
r.timeout = time.Millisecond * time.Duration(timeout)
}
}
func (r *EasRequest) SetResponseFunc(name string) {
if name == "pssmartResponseFunc" {
r.responseFunc = pssmartResponseFunc
} else if name == "tfResponseFunc" {
r.responseFunc = tfResponseFunc
} else if name == "alinkFMResponseFunc" {
r.responseFunc = alinkFMResponseFunc
} else if name == "tfMutValResponseFunc" {
r.responseFunc = tfMutValResponseFunc
} else if name == "easyrecResponseFunc" {
r.responseFunc = easyrecResponseFunc
} else if name == "easyrecResponseFuncDebug" {
r.responseFunc = easyrecResponseFuncDebug
} else if name == "easyrecMutValResponseFunc" {
r.responseFunc = easyrecMutValResponseFunc
} else if name == "easyrecMutValResponseFuncDebug" {
r.responseFunc = easyrecMutValResponseFuncDebug
} else if name == "easyrecMutClassificationResponseFunc" {
r.responseFunc = easyrecMutClassificationResponseFunc
} else if name == "easyrecMutClassificationResponseFuncDebug" {
r.responseFunc = easyrecMutClassificationResponseFuncDebug
} else if name == "easyrecUserEmbResponseFunc" {
r.responseFunc = easyrecUserEmbResponseFunc
} else if name == "easyrecUserRealtimeEmbeddingResponseFunc" {
r.responseFunc = easyrecUserRealtimeEmbeddingResponseFunc
} else if name == "easyrecUserRealtimeEmbeddingMindResponseFunc" {
r.responseFunc = easyrecUserRealtimeEmbeddingMindResponseFunc
} else if name == "tfServingResponseFunc" {
r.responseFunc = tfServingResponseFunc
} else if name == "torchrecMutValResponseFunc" {
r.responseFunc = torchrecMutValResponseFunc
} else if name == "torchrecMutValResponseFuncDebug" {
r.responseFunc = torchrecMutValResponseFuncDebug
} else if name == "torchrecEmbeddingResponseFunc" {
r.responseFunc = torchrecEmbeddingResponseFunc
} else if name == "torchrecEmbeddingItemsResponseFunc" {
r.responseFunc = torchrecEmbeddingItemsResponseFunc
} else if name == "tfUseEmbResponseFunc" {
r.responseFunc = tfUseEmbResponseFunc
}
r.responseFuncName = name
}
func (r *EasRequest) GetResponseFunc() response.ResponseFunc {
return r.responseFunc
}