我使用stats/HandleRPC()来发出一些关于RPC持续时间的指标,当我收到stats/End数据时,我想用一些可以从传入和传出的有效负载中提取的信息来标记这些指标。
func (h *myStatsHandler) HandleRPC(ctx context.Context, rpcStats stats.RPCStats) {
switch stat := rpcStats.(type) {
case *stats.End:
durationMs := stat.EndTime.Sub(stat.BeginTime).Seconds() * 1000.0
// Now before sending this value, I need to know, for example the value of a specific key in the request payload, or whether the response is nil or not
}
}
1条答案
按热度按时间oyxsuwqo1#
在
TagRPC
的实现中,可以创建一个结构体,并将指向它的指针添加到上下文中。然后通过对HandleRPC
的连续调用在其中添加信息。因此,如果需要从Payload中获得某些只在*stats.InPayload
调用中可用的信息,可以将其提取出来并存储在添加到上下文中的结构体中。然后在以后使用*stats.End
再次调用HandleRPC
时访问它