remote.py 文件源码

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

项目:PyPlanet 作者: PyPlanet 项目源码 文件源码
def execute(self, method, *args, timeout=45.0):
        """
        Query the dedicated server and return the results. This method is a coroutine and should be awaited on.
        The result you get will be a tuple with data inside (the response payload).

        :param method: Server method.
        :param args: Arguments.
        :param timeout: Wait for x seconds until future is returned. Default is 45 seconds.
        :type method: str
        :type args: any
        :return: Tuple with response data (after awaiting).
        :rtype: Future<tuple>
        """
        request_bytes = dumps(args, methodname=method, allow_none=True).encode()
        length_bytes = len(request_bytes).to_bytes(4, byteorder='little')
        handler = self.get_next_handler()

        handler_bytes = handler.to_bytes(4, byteorder='little')

        # Create new future to be returned.
        self.handlers[handler] = future = asyncio.Future()

        # Send to server.
        self.writer.write(length_bytes + handler_bytes + request_bytes)

        return await asyncio.wait_for(future, timeout)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号