为了账号安全,请及时绑定邮箱和手机立即绑定

Go Lang 和 Labix mgo - 在后续请求后获得 EOF

Go Lang 和 Labix mgo - 在后续请求后获得 EOF

Go
芜湖不芜 2021-10-04 16:14:22
我有一个网络进程,类似于func main() {    // mgo    mongoDatabase, err := mgopath.Connect(envMongoPath)    if err != nil {        log.Fatal(err)    }    r := mux.NewRouter()    // ....    r.HandleFunc("/apps/{app:.+}", stuffHandler(mongoDatabase)).Methods("GET")    http.Handle("/", r)    listen := fmt.Sprintf("%s:%s", host, port)    log.Fatal(http.ListenAndServe(listen, nil))}而 mgopath.Connect 看起来像func Connect(mongoPath string) (*mgo.Database, error) {    dbConfig, err := url.Parse(mongoPath)    if err != nil {        return nil, err    }    log.Printf("Connecting to %s", dbConfig.Host)    sess, err := mgo.Dial(dbConfig.Host)    if err != nil {        return nil, err    }    dbName := dbConfig.Path    log.Printf("Using database %s", dbName)    if len(dbName) < 2 {        return nil, errors.New("No database name specified.")    }    dbName = dbConfig.Path[1:len(dbConfig.Path)]    return sess.DB(dbName), err}在路上的某个地方:c := database.C("stuff")err = c.Find(bson.M{"id": id}).One(&item) // First ~1-2 minutes work as expected, then I receive EOFs// c.Insert(), c.Update(), c.All()...问题是,几分钟后,对 mongodb 的所有查询都返回错误EOF。我必须重新启动该过程才能使事情再次运行。在 Mac 和(更频繁)在 Windows 上遇到过这两个问题。MongoDB 在 Docker 内部运行,而 Docker 又在 boot2docker 内部运行。虚拟机端口转发已经完成(这就是查询工作一段时间的原因)。每次我做查询时,mgo 都需要我拨号吗?有一些我不知道的超时吗?
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 175 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信