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)))
这里的 .now
在 NIODeadline
里面,它作为一个 +
运算符被定义为用 TimeLimit
添加(检查 here)。
超时:
CallOptions(timeLimit: .timeout(.seconds(1)))
请注意,我不是 Swift 方面的专家,但我查看了 TimeLimitTests.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)))
这里的 .now
在 NIODeadline
里面,它作为一个 +
运算符被定义为用 TimeLimit
添加(检查 here)。
超时:
CallOptions(timeLimit: .timeout(.seconds(1)))
请注意,我不是 Swift 方面的专家,但我查看了 TimeLimitTests.swift,这似乎是我的想法。
如果您需要更多帮助,请告诉我。