登录
首页 >  Golang >  Go问答

我如何知道 mgo 会话是否已关闭

来源:stackoverflow

时间:2024-03-30 16:18:33 299浏览 收藏

在Golang实战开发的过程中,我们经常会遇到一些这样那样的问题,然后要卡好半天,等问题解决了才发现原来一些细节知识点还是没有掌握好。今天golang学习网就整理分享《我如何知道 mgo 会话是否已关闭》,聊聊,希望可以帮助到正在努力赚钱的你。

问题内容

我正在使用 Go 的 MongoDB 驱动程序 labix_mgo*mgo.Session,但是我不知道会话是否已关闭。当我使用关闭的会话时,将引发运行时错误。如果我知道会话已关闭,我想跳过会话副本。


解决方案


首先,您正在使用的 mgo 驱动程序:gopkg.in/mgo.v2(托管于 https://github.com/go-mgo/mgo)不再维护。相反,请使用社区支持的分支 github.com/globalsign/mgo,它具有向后兼容的 API。

mgo.Session 没有提供检测是否已关闭的方法(使用其 Session.Close() 方法)。

但是您不应该依赖其他人来关闭您正在使用的会话。 获取会话的相同代码应该负责关闭它。遵循这个简单的原则,您就不会遇到使用关闭会话的问题。

例如,如果我们以 Web 服务器为例,在请求开头使用 Session.Copy()(或 Session.Clone())获取会话,并在同一个处理程序中关闭会话(最好使用 defer),相同的功能。并将此会话传递给任何需要它的人。他们不必关闭它,他们不能这样做,这是创建它的函数的责任。

理论要掌握,实操不能落!以上关于《我如何知道 mgo 会话是否已关闭》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

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