超时机制
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进行管理。