grpc-swift:如何在 Swift 中为 RPC 设置超时?

grpc-swift: How to set timeout for an RPC in Swift?

我正在使用 https://github.com/grpc/grpc-swift 进行进程间通信。我有一个用 Go 编写的 GRPC 服务器监听 unix 域套接字,还有一个用 Swift 编写的 macOS 应用程序通过套接字与其通信。

假设 Go 服务器进程不是 运行,我从我的 Swift 程序进行 RPC 调用。调用失败前的默认超时为 20 秒,但我想将其缩短为 1 秒。我正在尝试做这样的事情:

let callOptions = CallOptions(timeLimit: .seconds(1)) // <-- Does not compile

这失败并出现编译错误类型 'TimeLimit' has no member 'seconds'

减少 Swift GRPC 调用的超时间隔的正确方法是什么?

如错误TimeLimit中所述,没有成员seconds。您尝试访问的 seconds 函数在 TimeAmount 中。所以如果你想使用截止日期,你需要使用:

CallOptions(timeLimit: .deadline(.now() + .seconds(1)))

这里的 .nowNIODeadline 里面,它作为一个 + 运算符被定义为用 TimeLimit 添加(检查 here)。

超时:

CallOptions(timeLimit: .timeout(.seconds(1)))

请注意,我不是 Swift 方面的专家,但我查看了 TimeLimitTests.swift,这似乎是我的想法。

如果您需要更多帮助,请告诉我。