我有一個網(wǎng)絡進程,類似于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 內(nèi)部運行,而 Docker 又在 boot2docker 內(nèi)部運行。虛擬機端口轉發(fā)已經(jīng)完成(這就是查詢工作一段時間的原因)。每次我做查詢時,mgo 都需要我撥號嗎?有一些我不知道的超時嗎?
- 2 回答
- 0 關注
- 190 瀏覽
添加回答
舉報
0/150
提交
取消