2

2番目のオブジェクト(bClass)を持つプロパティを持つオブジェクト(aClass)を渡そうとすると、次のようになります:

Unpersistable('Unpersistable data: クラス amodule.bClass のインスタンスは安全でないと見なされます')

aClass はコピー可能でゼリー化されていませんが、bClass はそうではありません。

これが私のコードです:

サーバー.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 とそれに含まれるすべてのオブジェクトを unjelly する方法はありますか? インクルードされたオブジェクトの解凍は頭痛の種であり、汚いコードに変わる可能性があるため...

4

1 に答える 1

2

setUnjellyableForClassを使用する必要があります:

setUnjellyableForClass(bClass, bClass) 

bClass が Copyable から継承するようにします。

複合型の受け渡しをご覧ください

于 2012-05-31T16:05:31.877 に答える