Pyro4带回调

时间:2016-04-30 14:50:42

标签: python callback pyro

我在py文件中有以下类定义:

class this_obj(object):

    def __init__(self):
         self._apple = 5.0
         self.observ_apple = []

    def setter(self, value):
        if (self._apple != value):
            self._apple = value
            for callback in self.observ_apple:
                callback(self._apple)

    def getter(self):
        return self._apple

    # apply property
    apple = property(getter, setter)

    # binder functions
    def bind_to_apple(self, callback):
        self.observ_apple.append(callback)

我将这个主要代码放在另一个文件中:

import handler_obj

def print_on_change(value):
    print("apple change!!! " + str(value))

if __name__ == "__main__":
    q = handler_obj.this_obj()
    q.bind_to_apple(print_on_change)
    print(q.getter())
    q.setter(30)
    print(q.getter())

如果您运行此代码,您可以看到它正在运行。现在我试图用Pyro4运行相同的代码。在我这样做时,我总是遇到以下错误消息:

Pyro4.errors.SerializeError: unsupported serialized class: builtins.function

以下一行:

q.bind_to_apple(print_on_change)

我的问题是: 这对Pyro4来说是否可能,或者这是串行器的限制?如果我尝试使用泡菜而不是蛇,这可以解决吗?

如果不是可以替代Pyro4,你可以为我建议这样的情况吗?

提前致谢。

1 个答案:

答案 0 :(得分:1)

我刚刚找到了解决方案。如果将configuration.py中的序列化程序更改为dill,则也将处理函数回调。