__init__.py 文件源码

python
阅读 16 收藏 0 点赞 0 评论 0

项目:noc-orchestrator 作者: DirceuSilvaLabs 项目源码 文件源码
def connect(self):
        """Connect to Mongo and return a new connected MotorSocket. Note that
        the pool does not keep a reference to the socket -- you must call
        maybe_return_socket() when you're done with it.
        """
        child_gr = greenlet.getcurrent()
        main = child_gr.parent
        assert main is not None, "Should be on child greenlet"

        if self.max_size and self.motor_sock_counter >= self.max_size:
            if self.max_waiters and len(self.queue) >= self.max_waiters:
                raise self._create_wait_queue_timeout()

            waiter = stack_context.wrap(child_gr.switch)
            self.queue.append(waiter)

            if self.wait_queue_timeout is not None:
                deadline = self.io_loop.time() + self.wait_queue_timeout
                timeout = self.io_loop.add_timeout(
                    deadline,
                    functools.partial(
                        child_gr.throw,
                        pymongo.errors.ConnectionFailure,
                        self._create_wait_queue_timeout()))

                self.waiter_timeouts[waiter] = timeout

            # Yield until maybe_return_socket passes spare socket in.
            return main.switch()
        else:
            motor_sock = self.create_connection()
            motor_sock.settimeout(self.net_timeout)
            return SocketInfo(motor_sock, self.pool_id, self.pair[0])
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号