我们有一个用golang编写的gRPC服务器。对于其中一个RPC,我们从Google Maps gRPC API请求数据。一旦我们收到Google Maps RPC的回复,我们会进行一些计算并返回对封闭式RPC(由我们的服务器定义)的响应。
当然,我们在服务器上调用RPC时会收到Context对象。
我的问题是:我们是否应该将同一个Context对象传递给Google Maps RPC?或者,我们应该创建一个新的Context对象(使用context.Background()
),然后将其传递给Google Maps API吗?
答案 0 :(得分:2)
您收到的上下文包含取消和超时,因此最好使用相同的上下文来创建新的RPC。否则,您需要手动传递这些信号。
元数据的一方,接收上下文中的元数据不会自动转发到新的RPC,请参阅:
答案 1 :(得分:1)
据我所知,1个上下文对1的生命周期有效,只有1个rpc。 因此,一旦我们意识到我们即将进行完全不同的rpc调用,我们就应该创建一个新的上下文。 然而,新上下文的元数据可以受当前上下文的元数据的启发。 这里的RPC可以被认为类似于android中的单个活动/服务/广播。