在SimpleXMLRPCServer上发送异常

时间:2009-07-29 16:34:22

标签: python exception simplexmlrpcserver

我正在尝试在SimpleXMLRPCServer的服务器端引发异常;但是,所有尝试都会在客户端获得“故障1”异常。

RPC_Server.AbortTest()   文件“C:\ Python25 \ lib \ xmlrpclib.py”,第1147行,调用     return self .__ send(self .__ name,args)   在__request中输入“C:\ Python25 \ lib \ xmlrpclib.py”,第1437行     冗长=自.__冗长   请求中的文件“C:\ Python25 \ lib \ xmlrpclib.py”,第1201行     return self._parse_response(h.getfile(),sock)   _parse_response中的文件“C:\ Python25 \ lib \ xmlrpclib.py”,第1340行     return u.close()   文件“C:\ Python25 \ lib \ xmlrpclib.py”,第787行,关闭     提出错误(** self._stack [0]) xmlrpclib.Fault ::测试由RPC中止 请求“>

2 个答案:

答案 0 :(得分:1)

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

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

  • boolean:True和False常量
  • 整数:直接传入
  • 浮点数:直接传入
  • 字符串:直接传入
  • arrays:包含conformable元素的任何Python序列类型。数组以列表形式返回
  • 结构:Python字典。键必须是字符串,值可以是任何一致的类型。可以传入用户定义类的对象;只发送了他们的__dict__属性。
  • 日期:自纪元以来的秒数(传递DateTime类的实例)或datetime.datetime实例。
  • 二进制数据:传入二进制包装类的实例

答案 1 :(得分:0)

如果你引发这样的例外:

raise Exception('Help!')

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

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

<type 'exceptions.Exception'>:Help!

你当然可以解析这个来获取你需要的信息。