当前位置: 首页>>代码示例>>Python>>正文


Python Topology.reset_server_and_request_check方法代码示例

本文整理汇总了Python中pymongo.topology.Topology.reset_server_and_request_check方法的典型用法代码示例。如果您正苦于以下问题:Python Topology.reset_server_and_request_check方法的具体用法?Python Topology.reset_server_and_request_check怎么用?Python Topology.reset_server_and_request_check使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在pymongo.topology.Topology的用法示例。


在下文中一共展示了Topology.reset_server_and_request_check方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: MongoClient

# 需要导入模块: from pymongo.topology import Topology [as 别名]
# 或者: from pymongo.topology.Topology import reset_server_and_request_check [as 别名]

#.........这里部分代码省略.........
        """
        manager = manager_class(self)
        if not isinstance(manager, CursorManager):
            raise TypeError("manager_class must be a subclass of "
                            "CursorManager")

        self.__cursor_manager = manager

    def _get_topology(self):
        """Get the internal :class:`~pymongo.topology.Topology` object.

        If this client was created with "connect=False", calling _get_topology
        launches the connection process in the background.
        """
        self._topology.open()
        return self._topology

    @contextlib.contextmanager
    def _get_socket(self, selector):
        server = self._get_topology().select_server(selector)
        try:
            with server.get_socket(self.__all_credentials) as sock_info:
                yield sock_info
        except NetworkTimeout:
            # The socket has been closed. Don't reset the server.
            # Server Discovery And Monitoring Spec: "When an application
            # operation fails because of any network error besides a socket
            # timeout...."
            raise
        except NotMasterError:
            # "When the client sees a "not master" error it MUST replace the
            # server's description with type Unknown. It MUST request an
            # immediate check of the server."
            self._reset_server_and_request_check(server.description.address)
            raise
        except ConnectionFailure:
            # "Client MUST replace the server's description with type Unknown
            # ... MUST NOT request an immediate check of the server."
            self.__reset_server(server.description.address)
            raise

    def _socket_for_writes(self):
        return self._get_socket(writable_server_selector)

    @contextlib.contextmanager
    def _socket_for_reads(self, read_preference):
        preference = read_preference or ReadPreference.PRIMARY
        # Get a socket for a server matching the read preference, and yield
        # sock_info, slave_ok. Server Selection Spec: "slaveOK must be sent to
        # mongods with topology type Single. If the server type is Mongos,
        # follow the rules for passing read preference to mongos, even for
        # topology type Single."
        # Thread safe: if the type is single it cannot change.
        topology = self._get_topology()
        single = topology.description.topology_type == TOPOLOGY_TYPE.Single
        with self._get_socket(read_preference) as sock_info:
            slave_ok = (single and not sock_info.is_mongos) or (
                preference != ReadPreference.PRIMARY)
            yield sock_info, slave_ok

    def _send_message_with_response(self, operation, read_preference=None,
                                    exhaust=False, address=None):
        """Send a message to MongoDB and return a Response.

        :Parameters:
          - `operation`: a _Query or _GetMore object.
开发者ID:ToontownBattlefront,项目名称:Toontown-Battlefront,代码行数:70,代码来源:mongo_client.py


注:本文中的pymongo.topology.Topology.reset_server_and_request_check方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。