在 SimpleXMLRPCServer 上发送异常

发布于 2024-07-29 18:19:07 字数 602 浏览 6 评论 0原文

我试图在 SimpleXMLRPCServer 的服务器端引发异常; 但是,所有尝试都会在客户端出现“Fault 1”异常。

RPC_Server.AbortTest() 文件“C:\Python25\lib\xmlrpclib.py”,第 1147 行,调用 返回 self.__send(self.__name, args) 文件“C:\Python25\lib\xmlrpclib.py”,第 1437 行,在 __request 中 详细=自我.__详细 文件“C:\Python25\lib\xmlrpclib.py”,第 1201 行,根据请求 返回 self._parse_response(h.getfile(), sock) 文件“C:\Python25\lib\xmlrpclib.py”,第 1340 行,在 _parse_response 中 返回 u.close() 文件“C:\Python25\lib\xmlrpclib.py”,第 787 行,关闭 引发故障(**self._stack[0]) xmlrpclib.Fault: :测试被 RPC 中止 请求”>

I'm trying to raise an exception on the Server Side of an SimpleXMLRPCServer; however, all attempts get a "Fault 1" exception on the client side.

RPC_Server.AbortTest()
File "C:\Python25\lib\xmlrpclib.py", line 1147, in call
return self.__send(self.__name, args)
File "C:\Python25\lib\xmlrpclib.py", line 1437, in __request
verbose=self.__verbose
File "C:\Python25\lib\xmlrpclib.py", line 1201, in request
return self._parse_response(h.getfile(), sock)
File "C:\Python25\lib\xmlrpclib.py", line 1340, in _parse_response
return u.close()
File "C:\Python25\lib\xmlrpclib.py", line 787, in close
raise Fault(**self._stack[0])
xmlrpclib.Fault: :Test Aborted by a RPC
request">

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

情魔剑神 2024-08-05 18:19:07

是的,这就是当您在服务器端引发异常时发生的情况。 您是否期望 SimpleXMLRPCServer 将异常返回给客户端?

您只能使用可通过 XML 编组的对象。 这包括

  • 布尔值:True 和 False 常量
  • 整数:直接传入
  • 浮点数:直接传入
  • 字符串:直接传入
  • 数组:任何包含一致元素的 Python 序列类型。 数组作为列表结构返回
  • :Python 字典。 键必须是字符串,值可以是任何一致的类型。 可以传入用户自定义类的对象; 仅传输其 __dict__ 属性。
  • 日期 :自纪元以来的秒数(传入 DateTime 类的实例)或 datetime.datetime 实例。
  • 二进制数据:传入 Binary 包装类的实例

Yes, this is what happens when you raise an exception on the server side. Are you expecting the SimpleXMLRPCServer to return the exception to the client?

You can only use objects that can be marshalled through XML. This includes

  • boolean : The True and False constants
  • integers : Pass in directly
  • floating-point numbers : Pass in directly
  • strings : Pass in directly
  • arrays : Any Python sequence type containing conformable elements. Arrays are returned as lists
  • structures : A Python dictionary. Keys must be strings, values may be any conformable type. Objects of user-defined classes can be passed in; only their __dict__ attribute is transmitted.
  • dates : in seconds since the epoch (pass in an instance of the DateTime class) or a datetime.datetime instance.
  • binary data : pass in an instance of the Binary wrapper class
薔薇婲 2024-08-05 18:19:07

如果您引发这样的异常:

raise Exception('Help!')

在服务器中,您在客户端中获得的异常的消息成员将与在以类型的字符串表示形式为前缀的原始异常上执行 str() 相同。

我得到的消息成员的结果是:

<type 'exceptions.Exception'>:Help!

您当然可以解析它以获取您需要的信息。

If you raise an exception like this:

raise Exception('Help!')

in the server the message member of the exception you get in the client will be the same as executing str() on the original exception prefixed with the string representation of the type.

The result I get for the message member is:

<type 'exceptions.Exception'>:Help!

You could certainly parse this to get the information you need.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文