У меня есть класс, чьи объекты могут быть демонизированы как 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')
Я хотел бы сохранить эту функциональность.
Aдемонизированный объект этого класса может вызываться удаленно:
remote_object = Pyro4.Proxy('PYRO:TestAPI@localhost:9999')
Мой вопрос:
Можно ли JSON сериализовать объект этого класса так, чтобы он автоматически демонизировался при загрузке из файла JSON?
Я пробовал преобразование JSON с пакетами json
, jsonpickle
и serpent
, но демонизация после загрузки просто не работает.Я не знаю точную структуру объекта в памяти, поэтому я не знаю, возможно ли это вообще.Возможно, демонизация должна выполняться вручную каждый раз после загрузки объекта из JSON.
Можете ли вы помочь мне разработать какое-нибудь решение?