samil.py 文件源码

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

项目:solar 作者: mhvis 项目源码 文件源码
def __make_request(self, identifier, payload, response_id=None):
        """Directly makes a request and returns the response."""
        # Acquire socket request lock
        with self.lock:
            # Cancel a (possibly) running keep-alive timer
            self.keep_alive.cancel()
            # Receive non-blocking, to clear the receive buffer
            try:
                self.sock.recv(1024, socket.MSG_DONTWAIT)
            except socket.error as err:
                if err.errno != 11:
                    raise err
            else:
                logger.info('Receive buffer was not empty before a request')
            request = _construct_request(identifier, payload)
            self.sock.send(request)
            # Receive message, possibly retrying when wrong message arrived
            while True:
                data = self.sock.recv(1024)
                response = _tear_down_response(data)
                if not response_id or response_id == response[0]:
                    break
                else:
                    logger.info('Received unexpected message, waiting for a '
                            'new one')
            logger.debug('Request: %s', request)
            logger.debug('Response: %s', response)
            # Set keep-alive timer
            self.keep_alive = threading.Timer(keep_alive_time, self.__keep_alive)
            self.keep_alive.daemon = True
            self.keep_alive.start()
        return response
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号