我正在尝试使用Pyro4公开我的类。问题是我的类有一个Pyro4无法处理的自定义异常。
我尝试过使用序列化,但似乎都不起作用。
我所拥有的是:
# exception class
class TestException(Expection):
pass
# test class
@Pyro4.expose
class Test:
def get_exception(self):
raise TestException("This is a random exception.")Pyro4无法引发TestException。它给我一个错误:{SerializedError}不支持序列化类: TestException
有谁有办法解决这个问题吗?
谢谢。
发布于 2019-04-05 03:21:47
您需要告诉Pyro (或者更确切地说,是底层的Serpent序列化程序),您同意反序列化自定义异常类,以及它必须如何做到这一点。根据这一点,您可能还必须确保双方(客户端和服务器)都有权访问定义您的TestException类的同一源模块。
这在文档中有介绍。具体来说,https://pyro4.readthedocs.io/en/stable/clientcode.html#changing-the-way-your-custom-classes-are-de-serialized
出于安全原因,这会引发错误并需要程序员的努力。(对从网络接收的随机类进行反序列化是危险的)
最后,只捕获Pyro服务器中的异常并引发一个标准的Python异常可能会更容易。
https://stackoverflow.com/questions/55515011
复制相似问题