Можно ли сериализовать демонизированные объекты? - PullRequest
0 голосов
/ 19 февраля 2019

У меня есть класс, чьи объекты могут быть демонизированы как 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.
Можете ли вы помочь мне разработать какое-нибудь решение?

...