超時機制
HTTP API
HTTP API的超時設置相對靈活,Request對象 -> Client對象 -> 默認值,設置的優先級依次降低。
默認連接超時為5秒,讀超時為10秒。
下面的代碼演示如何自定義超時設置
- Python
- Java
from webullsdkcore.client import ApiClient
from webullsdkmdata.request.get_instruments_request import GetInstrumentsRequest
from webullsdkcore.common.region import Region
# 設置連接超時為3秒,讀超時為6秒
client = ApiClient(app_key="<your_app_key>", app_secret="<your_app_secret", region_id=Region.HK.value, connect_timeout=3, timeout=6)
request = GetInstrumentsRequest()
# 設置request的連接超時為2秒,讀超時為4秒,僅對當前請求有效
request.set_connect_timeout(2)
request.set_read_timeout(4)
HttpApiConfig apiConfig = HttpApiConfig.builder()
.appKey("<your_app_key>")
.appSecret("<your_app_secret>")
.regionId(Region.hk.name())
// 設置連接超時為3秒,讀超時為6秒
.runtimeOptions(new RuntimeOptions().connectTimeout(3, TimeUnit.SECONDS).readTimeout(6, TimeUnit.SECONDS))
.build();
HttpApiClient client = new HttpApiClient(apiConfig);
HttpRequest request = new HttpRequest("/app/subscriptions/list", Versions.V1, HttpMethod.GET);
// 設置request的連接超時為2秒,讀超時為4秒,僅對當前請求有效
request.setRuntimeOptions(new RuntimeOptions().connectTimeout(2, TimeUnit.SECONDS).readTimeout(4, TimeUnit.SECONDS));
List<Account> accounts = client.request(request).responseType(new TypeToken<List<Account>>() {}.getType()).doAction();
行情訂閱
行情訂閱是基於MQTT v3.1.1
實現的長連接,默認的連接超時為5秒,讀超時為60秒(60秒內會通過心跳包維繫連接)。
- Python
- Java
目前沒有提供自定義超時配置的方法。
QuotesSubsClient client = QuotesSubsClient.builder()
.appKey("<your_app_key>")
.appSecret("<your_app_secret>")
.regionId(Region.hk.name())
// 設置連接超時為10秒,讀超時為60秒
.connectTimeout(10000)
.readTimeout(60000)
.build()
交易事件檢閱/行情API
交易事件檢閱是基於gRPC
實現的Server Streaming
長連接,目前沒有提供自定義超時配置的方法。
- Python
- Java
超時默認被Python的gRPC libs進行管理。
超時默認被Java的gRPC libs進行管理。