我正在构建一个程序,它有一个在本地使用的类,但我希望在网络上以相同的方式使用同一个类。这意味着我需要能够对其任何公共方法进行同步调用。该类读写文件,所以我认为 XML-RPC 开销太大。我使用来自 twisted 的示例创建了一个基本的 rpc 客户端/服务器,但是我遇到了客户端问题。
c = ClientCreator(reactor, Greeter)
c.connectTCP(self.host, self.port).addCallback(request)
reactor.run()
这适用于单个调用,当接收到数据时,我调用 reactor.stop(),但如果我再进行调用,反应堆将不会重新启动。我应该为此使用其他东西吗?也许是不同的扭曲模块或另一个框架?
(我不包括协议如何工作的细节,因为主要的一点是我只得到一个调用。)
附录和说明:
我分享了一个谷歌文档,里面有关于我在做什么的注释。http://docs.google.com/Doc?id=ddv9rsfd_37ftshgpgz
我有一个使用保险丝编写的版本,可以将多个本地文件夹组合到保险丝安装点。文件访问已经在一个类中处理,所以我希望有服务器可以让我对同一个类进行网络访问。继续搜索后,我怀疑 pyro ( http://pyro.sourceforge.net/ ) 可能是我真正想要的(仅基于现在阅读他们的主页),但我愿意接受任何建议。
我可以通过使用 nfs 挂载并将其与我的本地文件夹组合来获得类似的结果,但我希望所有对等方都可以访问相同的组合文件系统,因此这将要求每台计算机都成为具有多个 nfs 的 nfs 服务器挂载数量等于网络中的计算机数量。
结论: 我决定使用 rpyc,因为它给了我我想要的东西。一个服务器,它保留一个类的实例,我可以像在本地一样操作它。如果有人感兴趣,我会将我的项目放在 Launchpad ( http://launchpad.net/dstorage ) 上。