Pyro4,对象改变了类(状态父),但代理看不到它



在应用程序中,我使用一个低级别库,并在一个单独的进程中运行它。与进程的连接是用Pyro4完成的。

工作前需要初始化库,工作后需要释放资源。因此,我实现了State模式,使两个状态很好地分离。

该库被嵌入到一个对象(由Pyro4.Daemon调用)中。它有一个初始化方法,该方法执行必要的过程,并将对象的__class__更改为"就绪"方法,后者具有调用库的所有方法。

但是,Pyro4.Proxy在调用初始化方法后不会看到对象更改其方法。不过,如果您查看实际对象(在单独的解释器中,在线程中运行Pyro4.Daemon),__class__确实发生了变化,并且一切都很好。问题出在Pyro4.Proxy方面。

那么,在使用Pyro4时,是否可以更改__class__?我只是做错了什么吗

PS

当您第一次调用远程对象时,Pyro4.Proxy似乎抓住了它的方法。然后这些方法就被冻结了。我能以某种方式"刷新"这个过程吗,让Proxy再次检查这些方法?

啊哈!所以答案是运行:

pyro_proxy._pyroGetMetadata()

它获取关于远程对象的元数据并填充CCD_ 12对象的方法。

链接:

  • PYRO实施
  • 安装或存储库中的代码(仅限Python包!)

最新更新