Closed
Description
Version
List the version(s) of hyper
, and any relevant hyper dependency (such as h2
if this is related to HTTP/2).
hyper = { version = "1.1.0", features = ["full"] }
hyper-util = { version = "0.1.3", features = ["full"] }
Platform
The output of uname -a
(UNIX), or version and 32 or 64-bit (Windows)
linux 64
Description
hyper client happens cacel error which should retry
[short summary of the bug]
let mut connector = HttpConnector::new();
connector.set_nodelay(true);
//禁止使用该功能,其会在拿到IPV6和IPV4的时候优先尝试链接IPV6
connector.set_happy_eyeballs_timeout(None);
connector.set_connect_timeout(Some(Duration::from_millis(constant::constant_config::CONNECT_TIME_OUT)));
// connector.set_send_buffer_size(Some(constant::constant_config::BUFFER_SIZE));
// connector.set_recv_buffer_size(Some(constant::constant_config::BUFFER_SIZE));
connector.set_reuse_address(true);
//hyper_util::rt::TokioExecutor::new() 是否会导致上下文切换更多?
let http_client = Client::builder(TokioExecutor::new())
.http1_preserve_header_case(true)
.http1_title_case_headers(false)
.pool_idle_timeout(Duration::from_millis(constant::constant_config::CLIENT_IDLE_TIME_OUT)) //空闲链接
// .pool_max_idle_per_host(constant::constant_config::MAX_IDLE_CONNECTIONS_PER_HOST_HTTP_ALL)
// .executor()
// .http1_max_buf_size(constant::constant_config::BUFFER_SIZE)
.http1_ignore_invalid_headers_in_responses(false)
.http1_allow_spaces_after_header_name_in_responses(false)
.http1_allow_obsolete_multiline_headers_in_responses(false)
.timer(TokioTimer::default())
.pool_timer(TokioTimer::default())
.build(connector);
http_client
when use http_client send request,i got some error message as follows:
request::error("message", "Error { kind: SendRequest, source: Some(hyper::Error(Canceled, \"connection closed\")) }"
equest::error("message", "Error { kind: SendRequest, source: Some(hyper::Error(Canceled, \"connection was not ready\")) }")
retry_canceled_requests default is true, i think it should not happen these errors