嗨我有以下文件插入工作正常,我可以调用该功能。但是,我怀疑这个功能中的DB连接是非常有效的,因为我每分钟称它为30-40次。
我需要将db会话连接移到我的函数之外,我认为它与* mongoSession有关,但是无法让它工作。任何帮助都会得到满足。
tldr :如何在功能
之外移动连接func insertmgo(aaa string, bbb string, ccc time.Time, wg *sync.WaitGroup) {
// mongo stuff
mongoDBDialInfo := &mgo.DialInfo{
Addrs: []string{MongoDBHosts},
Timeout: 60 * time.Second,
Database: AuthDatabase,
Username: AuthUserName,
Password: AuthPassword,
}
mongoSession, err := mgo.DialWithInfo(mongoDBDialInfo)
if err != nil {
log.Fatalf("CreateSession: %s\n", err)
}
mongoSession.SetMode(mgo.Monotonic, true)
c := mongoSession.DB("x").C("ships")
oneship.Created = ccc
oneship.Name = bbb
oneship.Type = aaa
c.Insert(oneship)
wg.Done()
}
答案 0 :(得分:1)
找到了解决方案
main {
mongo stuff
mongoDBDialInfo := &mgo.DialInfo{
Addrs: []string{MongoDBHosts},
Timeout: 60 * time.Second,
Database: AuthDatabase,
Username: AuthUserName,
Password: AuthPassword,
}
mongoSession, err := mgo.DialWithInfo(mongoDBDialInfo)
if err != nil {
log.Fatalf("CreateSession: %s\n", err)
}
}
使用
调用函数fun(mongoSession, .....)
在您的函数中
func fun(db *mgo.Session, .... , wg *sync.WaitGroup) {
我认为是这样的。不确定是否有其他或更好的方法,但这似乎对我有用。