登录
首页 >  Golang >  Go问答

为 gRPC 服务器提供请求的根上下文方法

来源:stackoverflow

时间:2024-03-14 18:36:26 148浏览 收藏

小伙伴们有没有觉得学习Golang很有意思?有意思就对了!今天就给大家带来《为 gRPC 服务器提供请求的根上下文方法》,以下内容将会涉及到,若是在学习中对其中部分知识点有疑问,或许看了本文就能帮到你!

问题内容

当 golang grpc 服务器调用处理函数时,传递的 ctx 值源自此处在 grpc 传输层中创建的私有顶级上下文:

/go/pkg/mod/google.golang.org/[电子邮件受保护]/internal/transport/http2_server.go:219

t := &http2Server{
        ctx:               context.Background(),
        done:              done,
        conn:              conn,
        remoteAddr:        conn.RemoteAddr()
         ...

该上下文不是从服务器构建时提供的根上下文派生的,是否有原因?

也许 grpc.newserver(opt ...serveroption) 可能有 ctx 变体 grpc.newserverctx(ctx, ...serveroption)

这将为您提供传输您希望所有上下文包含的值的选项。


解决方案


我认为这是一个非常好的问题。答案是,因为该包不可用于外部调用,当不允许任何人使用该包时,为什么要导出一些东西呢?

但是为什么是私有包呢?

让我们看看文件的路径:

/google.golang.org/[email protected]/internal/transport/http2_server.go:219

内部是关键:

/google.golang.org/[email protected]/internal/

该路径内的所有内容都仅适用于该包。

因此,对于该代码,您显示外部没有人能够使用该包。所以里面的所有东西都可以不导出。

以上就是《为 gRPC 服务器提供请求的根上下文方法》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>