是否可以序列化守护对象?

时间:2019-02-19 06:10:11

标签: python json serialization daemon pyro

我有一类可以将其对象守护为Pyro守护进程的类,其中守护进程循环在单独的thread中运行:

import Pyro4
import threading

@Pyro4.expose
class TestAPI:

    def __init__(self):
        self.uri = None
        self.thread = None
        self.daemon = None

    def start(self):
        """Create thread and run daemonize method"""
        self.thread = threading.Thread(target=self.daemonize, args=())
        self.thread.daemon = True                           
        self.thread.start()           

    def daemonize(self):    
        """Daemonize object"""
        if self.daemon:
            print('Object already has Pyro ID: ', self.uri)
            return
        self.daemon = Pyro4.Daemon(port=9999)
        self.uri = self.daemon.register(self, objectId='TestAPI')
        print(self.uri)
        print('Daemon starting')
        self.daemon.requestLoop()        

    def stop(self):
        """Shotdown daemon"""
        if not self.daemon:
            print('Object is not daemonized.')
            return
        self.daemon.shutdown()
        self.daemon.unregister(self)
        self.daemon = None
        self.uri = None
        print('Daemon stopped')

我想保留此功能。
此类的守护程序对象可以远程调用:

remote_object = Pyro4.Proxy('PYRO:TestAPI@localhost:9999')

我的问题:
是否可以对此类的对象进行JSON序列化,以便从JSON文件加载时自动进行守护进程?

我尝试使用jsonjsonpickleserpent包进行JSON转换,但是守护进程在加载后无法正常工作。我不知道内存中确切的对象结构,所以基本上我不知道这是否有可能。也许每次从JSON加载对象后,都必须手动完成守护进程。
您能帮我设计一些解决方案吗?

0 个答案:

没有答案