我很少在日志中看到来自mgo的EOF错误。在搜索此问题时,我遇到了这个discussion,建议在循环开始时放一个session.Refresh()
可以安全地处理此问题,例如套接字错误,超时等其他问题。< / p>
但是我找不到我的循环是否应该像这样,其中在每个Refresh()之后重新分配集合(* mgo.Collection):
session := // create mgo session
var collection *mgo.Collection
for{
session.Refresh()
collection := session.DB("dbname").C("collectionName")
....
}
或如下所示,其中在循环外分配一次集合:
session := // create mgo session
collection := session.DB("dbname").C("collectionName")
for{
session.Refresh()
....
}
发布此信息是因为我无法随意模拟此问题