我在Go中的Google App Engine上遇到urlfetch超時問題。該應用程序似乎不想花費比5秒鐘更長的超時時間(它會忽略較長的超時時間,並超過自己的時間超時)。GAE Golang - urlfetch超時?
我的代碼是:
var TimeoutDuration time.Duration = time.Second*30
func Call(c appengine.Context, address string, allowInvalidServerCertificate bool, method string, id interface{}, params []interface{})(map[string]interface{}, error){
data, err := json.Marshal(map[string]interface{}{
"method": method,
"id": id,
"params": params,
})
if err != nil {
return nil, err
}
req, err:=http.NewRequest("POST", address, strings.NewReader(string(data)))
if err!=nil{
return nil, err
}
tr := &urlfetch.Transport{Context: c, Deadline: TimeoutDuration, AllowInvalidServerCertificate: allowInvalidServerCertificate}
resp, err:=tr.RoundTrip(req)
if err != nil {
return nil, err
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, err
}
result := make(map[string]interface{})
err = json.Unmarshal(body, &result)
if err != nil {
return nil, err
}
return result, nil
}
無論我嘗試設置TimeoutDuration
到,應用程序超時約5秒鐘後。如何防止它做到這一點?我的代碼中有錯誤嗎?
你不需要施放[常量](https://blog.golang.org /常數),'30 * time.Second'是首選。 –
感謝2016年更新! –