我有一类可以将其对象守护为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文件加载时自动进行守护进程?
我尝试使用json
,jsonpickle
和serpent
包进行JSON转换,但是守护进程在加载后无法正常工作。我不知道内存中确切的对象结构,所以基本上我不知道这是否有可能。也许每次从JSON加载对象后,都必须手动完成守护进程。
您能帮我设计一些解决方案吗?