本節主要介紹V2.0 Go SDK的逾時配置方式。
逾時配置方式
說明
逾時配置優先順序為:RuntimeOption配置->Client配置->預設,優先順序依次降低。
使用預設配置。預設連線逾時為5秒,讀逾時為10秒。
通過運行時參數(RuntimeOptions)配置逾時時間。
package main import ( "encoding/json" "fmt" openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client" ecs20140526 "github.com/alibabacloud-go/ecs-20140526/v3/client" util "github.com/alibabacloud-go/tea-utils/v2/service" "github.com/alibabacloud-go/tea/tea" ) func main() { config := &openapi.Config{ // 從環境變數擷取RAM使用者的AccessKey ID AccessKeyId: tea.String("<AccessId>"), // 從環境變數擷取RAM使用者的AccessKey Secret AccessKeySecret: tea.String("<AccessSecret>"), // Region ID RegionId: tea.String("<RegionId>"), } client, _err := ecs20140526.NewClient(config) if _err != nil { panic(_err) } describeRegionsRequest := &ecs20140526.DescribeRegionsRequest{} // 建立RuntimeObject執行個體並設定運行參數。 runtime := &util.RuntimeOptions{} // 逾時參數設定,單位 ms(毫秒) runtime.ConnectTimeout = tea.Int(10000) // 設定連線逾時為10秒 runtime.ReadTimeout = tea.Int(10000) // 設定讀逾時為10秒 resp, _err := client.DescribeRegionsWithOptions(describeRegionsRequest, runtime) if _err != nil { panic(_err) } body, err := json.Marshal(resp.Body) if err != nil { panic(err) } fmt.Printf("body: %s\n", string(body)) }
通過Config在初始化Client階段配置逾時時間。
package main import ( "encoding/json" "fmt" openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client" ecs20140526 "github.com/alibabacloud-go/ecs-20140526/v3/client" util "github.com/alibabacloud-go/tea-utils/v2/service" "github.com/alibabacloud-go/tea/tea" ) func main() { config := &openapi.Config{ // 從環境變數擷取RAM使用者的AccessKey ID AccessKeyId: tea.String("<AccessId>"), // 從環境變數擷取RAM使用者的AccessKey Secret AccessKeySecret: tea.String("<AccessSecret>"), // Region ID RegionId: tea.String("<RegionId>"), // 逾時參數設定,單位 ms(毫秒) ConnectTimeout: tea.Int(10000), // 連線逾時 ReadTimeout: tea.Int(10000), // 讀逾時 } client, _err := ecs20140526.NewClient(config) if _err != nil { panic(_err) } describeRegionsRequest := &ecs20140526.DescribeRegionsRequest{} // 建立RuntimeObject執行個體並設定運行參數。 runtime := &util.RuntimeOptions{} resp, _err := client.DescribeRegionsWithOptions(describeRegionsRequest, runtime) if _err != nil { panic(_err) } body, err := json.Marshal(resp.Body) if err != nil { panic(err) } fmt.Printf("body: %s\n", string(body)) }