mohuishou / protoc-gen-go-gin

从 protobuf 文件中生成使用 gin 的 http rpc 服务 (protobuf to gin code)
112 stars 44 forks source link

`ctx`转换问题 #3

Open x-lambda opened 3 years ago

x-lambda commented 3 years ago
    newCtx := metadata.NewIncomingContext(ctx, md)
    out, err := s.server.(BlogServiceHTTPServer).GetArticles(newCtx, &in)

大佬还是这个ctx转换问题,这里使用metadata转换有啥特殊的原因吗? 我如果直接使用

newCtx := ctx.Request.Context()

后续的操作,db.Exec()/http.Do()/redis.Do()都会检查ctx.Done()来判断是否超时,这样我的超时就可以控制在更细的粒度。 能否解答一下这2种,哪种更好一点呢?

mohuishou commented 3 years ago

metadata 这个也可以检查用来检查超时,因为都实现了 context 的接口, metadata 只是为了把 header 的信息附加到 context 当中,并且可以和 grpc 保持一致,这样我们 Service 层的代码可以不做任何改动就同时支持 grpc 和 http