超時機制
更新時間:
本節主要介紹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)) }
文檔內容是否對您有幫助?