我使用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
相加。
和超时:
CallOptions(timeLimit: .timeout(.seconds(1)))
请注意,我不是Swift专家,但我检查了TimeLimitTests.swift,这似乎是一个想法。