Vapor Swift如何配置客户端连接超时时间



我使用Vapor Swift从服务器端使用以下方法发送GET/POST请求:

req.application.client.get(<#T##url: URI##URI#>, headers: <#T##HTTPHeaders#>, beforeSend: <#T##(inout ClientRequest) throws -> ()#>)
req.application.client.post(<#T##url: URI##URI#>, headers: <#T##HTTPHeaders#>, beforeSend: <#T##(inout ClientRequest) throws -> ()#>)

如何设置请求的超时时间?

我知道Swift NIO有scheduleTask功能,但我不太确定如何正确实现它。一些例子会很棒!

let promise = req.eventLoop.makePromise(of: ClientResponse.self)
let timeoutSchedule = req.eventLoop.scheduleTask(in: .seconds(20)) {
promise.fail(HTTPClientError.connectTimeout)
}
timeoutSchedule.cancel()

Vapor不会在客户端上公开每个请求超时。你可以下拉直接使用AsyncHTTPClient和request.application.http.client,并在每个文档中使用它来传递超时。

或者你可以在configure.swift中设置全局超时用app.http.client.configuration.timeout。默认为10s连接超时,但没有读取超时。

最后,如果API支持分页之类的东西,你还可以减少你拉下的数据量

最新更新