如何解决在XML-RPC服务器中捕获异常,而不是将异常发送给客户端
我见过this old question,但唯一的回答是错误“不可重现”。我正在使用conda安装的Linux 3.8上的Linux上运行此程序。
这是我的服务器代码:
import xmlrpc.server
class RequestHandler(xmlrpc.server.SimpleXMLRPCRequestHandler):
rpc_paths = ('/RPC2',)
class Dispatcher:
def hello_world(self):
raise RuntimeError("catch this")
class Server(xmlrpc.server.SimpleXMLRPCServer):
def __init__(self):
super().__init__(addr=("localhost",8630),requestHandler=RequestHandler)
self.register_instance(Dispatcher())
with Server() as server:
server.serve_forever()
我的客户代码:
import xmlrpc.client
proxy = xmlrpc.client.ServerProxy(uri="http://localhost:8630")
proxy.hello_world()
运行客户端(服务器正在运行时)的结果:
Traceback (most recent call last):
File "/home/user/PycharmProjects/tests/client.py",line 5,in <module>
proxy.hello_world()
File "/home/user/miniconda3/envs/tests/lib/python3.8/xmlrpc/client.py",line 1109,in __call__
return self.__send(self.__name,args)
File "/home/user/miniconda3/envs/tests/lib/python3.8/xmlrpc/client.py",line 1450,in __request
response = self.__transport.request(
File "/home/user/miniconda3/envs/tests/lib/python3.8/xmlrpc/client.py",line 1153,in request
return self.single_request(host,handler,request_body,verbose)
File "/home/user/miniconda3/envs/tests/lib/python3.8/xmlrpc/client.py",line 1169,in single_request
return self.parse_response(resp)
File "/home/user/miniconda3/envs/tests/lib/python3.8/xmlrpc/client.py",line 1341,in parse_response
return u.close()
File "/home/user/miniconda3/envs/tests/lib/python3.8/xmlrpc/client.py",line 655,in close
raise Fault(**self._stack[0])
xmlrpc.client.Fault: <Fault 1: "<class 'RuntimeError'>:catch this">
Process finished with exit code 1
服务器仅打印以下内容:
127.0.0.1 - - [05/Oct/2020 14:15:43] "POST /RPC2 HTTP/1.1" 200 -
我希望服务器代码像其他任何Python程序一样崩溃并显示回溯,而不是捕获异常并将其作为Fault
发送给客户端。我该怎么办?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。