通过透视代理传递多个对象(复杂类型)
每当我尝试把一个对象(aClass)传递给另一个对象(bClass)时,我都会遇到这个问题:
Unpersistable('无法保存的数据:amodule.bClass的实例被认为是不安全的')
aClass是可以复制的,并且是“可解冻”的,而bClass则不是。
这是我的代码:
server.py:
from twisted.application import internet, service
from twisted.spread import pb
from amodule import PBServer
application = service.Application("Test app")
# Prepare managers
clientManager = internet.TCPServer(8282, pb.PBServerFactory(PBServer()));
clientManager.setServiceParent(application)
if __name__ == '__main__':
print "Run with twistd"
import sys
sys.exit(1)
amodule.py:
from twisted.spread import pb
class bClass:
"""This is not a Copyable class
"""
class aClass(pb.RemoteCopy, pb.Copyable):
b = bClass()
pb.setUnjellyableForClass(aClass, aClass)
class PBServer(pb.Root):
def remote_echo(self, a):
return a.b
有没有办法把aClass和它能包含的所有对象都“解冻”呢?因为解冻包含的对象很麻烦,可能会导致代码变得很乱……
1 个回答
2
你应该使用 setUnjellyableForClass:
setUnjellyableForClass(bClass, bClass)
并让 bClass 继承自 Copyable。
可以看看 传递复杂类型