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.timeoutconfigure.swift 中设置全局超时。默认为 10 秒连接超时,但没有读取超时。

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