Vapor Swift 如何配置客户端连接超时
Vapor Swift How to Configure Client Connection Timeout
我正在使用 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 -> ()#>)
如何为请求设置超时?我在 Vapor 文档中找不到任何有用的信息。
我知道 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
并使用它 per the docs 传递超时。
或者,您可以使用 app.http.client.configuration.timeout
在 configure.swift 中设置全局超时。默认为 10 秒连接超时,但没有读取超时。
最后,如果 API 支持分页之类的东西,您还可以减少要下拉的数据量
我正在使用 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 -> ()#>)
如何为请求设置超时?我在 Vapor 文档中找不到任何有用的信息。
我知道 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
并使用它 per the docs 传递超时。
或者,您可以使用 app.http.client.configuration.timeout
在 configure.swift 中设置全局超时。默认为 10 秒连接超时,但没有读取超时。
最后,如果 API 支持分页之类的东西,您还可以减少要下拉的数据量