在应用程序中,我使用一个低级别库,并在一个单独的进程中运行它。与进程的连接是用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包!)