本文整理汇总了Python中pymongo.errors.ExceededMaxWaiters方法的典型用法代码示例。如果您正苦于以下问题:Python errors.ExceededMaxWaiters方法的具体用法?Python errors.ExceededMaxWaiters怎么用?Python errors.ExceededMaxWaiters使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类pymongo.errors
的用法示例。
在下文中一共展示了errors.ExceededMaxWaiters方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: acquire
# 需要导入模块: from pymongo import errors [as 别名]
# 或者: from pymongo.errors import ExceededMaxWaiters [as 别名]
def acquire(self, blocking=True, timeout=None):
if not self.waiter_semaphore.acquire(False):
raise ExceededMaxWaiters()
try:
return self.semaphore.acquire(blocking, timeout)
finally:
self.waiter_semaphore.release()
示例2: run
# 需要导入模块: from pymongo import errors [as 别名]
# 或者: from pymongo.errors import ExceededMaxWaiters [as 别名]
def run(self):
try:
logging.info("Tailing oplog on %s for changes" % self.uri)
self.timer.start(self.timer_name)
self.state.set('running', True)
self.connect()
oplog = self.oplog()
while not self.tail_stop.is_set() and not self.backup_stop.is_set():
try:
self._cursor = self.db.get_oplog_cursor_since(self.__class__, self.last_ts)
while self.check_cursor():
try:
# get the next oplog doc and write it
doc = self._cursor.next()
if self.last_ts and self.last_ts >= doc['ts']:
continue
oplog.add(doc)
# update states
self.count += 1
self.last_ts = doc['ts']
if self.first_ts is None:
self.first_ts = self.last_ts
update = {
'count': self.count,
'first_ts': self.first_ts,
'last_ts': self.last_ts
}
self.state.set(None, update, True)
# print status report every N seconds
self.status()
except NotMasterError:
# pymongo.errors.NotMasterError means a RECOVERING-state when connected to secondary (which should be true)
self.backup_stop.set()
logging.error("Node %s is in RECOVERING state! Stopping tailer thread" % self.uri)
raise OperationError("Node %s is in RECOVERING state! Stopping tailer thread" % self.uri)
except CursorNotFound:
self.backup_stop.set()
logging.error("Cursor disappeared on server %s! Stopping tailer thread" % self.uri)
raise OperationError("Cursor disappeared on server %s! Stopping tailer thread" % self.uri)
except (AutoReconnect, ConnectionFailure, ExceededMaxWaiters, ExecutionTimeout, NetworkTimeout), e:
logging.error("Tailer %s received %s exception: %s. Attempting retry" % (self.uri, type(e).__name__, e))
if self._tail_retry > self._tail_retry_max:
self.backup_stop.set()
logging.error("Reconnected to %s %i/%i times, stopping backup!" % (self.uri, self._tail_retry, self._tail_retry_max))
raise OperationError("Reconnected to %s %i/%i times, stopping backup!" % (self.uri, self._tail_retry, self._tail_retry_max))
self._tail_retry += 1
except StopIteration:
continue
sleep(1)
finally:
if self._cursor:
logging.debug("Stopping oplog cursor on %s" % self.uri)
self._cursor.close()