小编StT*_*mur的帖子

golang如何循环延迟工作?

我正在尝试处理与 MongoDB 的重新连接。为此,我尝试将每个操作执行三次(以防因 io.EOF 失败)

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
}
Run Code Online (Sandbox Code Playgroud)

所以问题是关于延迟。它会像我想象的那样关闭所有会话还是会以其他方式表现?如果您知道一些处理这种不同方式的良好实践,我将很乐意阅读它们。

go deferred-execution

5
推荐指数
2
解决办法
4365
查看次数

标签 统计

deferred-execution ×1

go ×1