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



我使用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相加。

和超时:

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

请注意,我不是Swift专家,但我检查了TimeLimitTests.swift,这似乎是一个想法。

最新更新