我正在尝试处理与MongoDB的重新连接。要做到这一点,我尝试三次执行每一项操作(如果它失败,io.EOF)golang如何推迟周期工作?
type MongoDB struct {
session *mgo.Session
DB *mgo.Database
}
func (d MongoDB) performWithReconnect(collection string,
operation func(*mgo.Collection) error) error {
var err error
for i := 0; i < 3; i++ {
session := d.session.Copy()
defer session.Close()
err = operation(session.DB(Config.MongoDb).C(collection))
if err == io.EOF{
continue
}
if err == nil{
return err
}
}
return err
}
所以现在的问题是关于延迟。它会按照我的设想关闭所有会话,还是会以其他方式行事? 如果你知道一些好的做法来处理这种不同的方式,我会很乐意阅读它们。