Mongo在数据查找期间找不到master

我正在使用pymongo运行大型数据更新。要运行更新,可以使用
collection.find_one(unique criteria)
找到单个记录,进行更改,批量更新,最后使用
db.collection.save([long list of records to save])
以块的形式发送。 在我的本地机器上(运行1.6.3),导入工作正常。 在远程服务器(运行1.6.0)上,这比我的本地机器快得多,我可以很好地完成部分插入,但在查找原始记录时会突然出现以下错误:
connection = Connection(...)
...
raise AutoReconnect("could not find master/primary")
pymongo.errors.AutoReconnect: could not find master/primary
我可以通过的记录数量有所不同,但不是随机的。 起初我以为我遇到了连接限制。我在每次记录查找后手动关闭连接:
collection.database.connection.disconnect()
哪个没解决问题。我是在正确的轨道上吗?     
已邀请:
所以这里有几个潜在的问题:
raise AutoReconnect("could not find master/primary") 
pymongo.errors.AutoReconnect: could not find master/primary
该错误表示现有连接已以某种方式失效。这可能发生的原因有很多。 发生这种情况的最常见原因是副本集的主节点已降级或已失败。在这种情况下,您的代码需要: 捕获(或陷阱)错误。 决定重试策略。 (失败?重试一次?......) 你在做这个吗? 你在运行副本集还是主/从? 您是否跟踪这些服务器的性能? 他们有网络问题吗? 他们是否转换角色?   collection.database.connection.disconnect()      哪个没解决问题。我是在正确的轨道上吗? 异常“发生”在哪里?它来自连接本身还是保存命令?   在远程服务器上(运行1.6.0) 在撰写本文时,1.6.0是MongoDB的一个非常旧的版本。在随后的1.6.x版本和1.7.x版本中修复了多个复制错误。 (我们已经在1.8.1rc-0) 我首先看看你的服务器发生了什么,但这可能会引导你走上升级之路。     
我在使用pymongo的交互式python中遇到了这个问题,我将会话空闲并在返回时遇到AutoReconnect。我这样处理过:
import functools
import pymongo
import time

MAX_AUTO_RECONNECT_ATTEMPTS = 5

def graceful_auto_reconnect(mongo_op_func):
  """Gracefully handle a reconnection event."""
  @functools.wraps(mongo_op_func)
  def wrapper(*args, **kwargs):
    for attempt in xrange(MAX_AUTO_RECONNECT_ATTEMPTS):
      try:
        return mongo_op_func(*args, **kwargs)
      except pymongo.errors.AutoReconnect as e:
        wait_t = 0.5 * pow(2, attempt) # exponential back off
        time.sleep(wait_t)

  return wrapper

@graceful_auto_reconnect
def some_func_that_does_mongodb_ops():
  ...
  ...
因人而异     

要回复问题请先登录注册