我基本上熟悉Python中可用的RPC解决方案:XML-RPC和Pyro。我可以通过在服务器端绑定它来创建远程对象,然后我可以在客户端获取我可以操作的代理对象。当我在远程对象上调用某些方法时,例如proxy.get_file()然后rpc机制尝试序列化结果对象(在这种情况下是一个文件)。这通常是预期的行为,但我需要的是将文件对象作为另一个远程代理对象而不是将其转移到客户端:
afile_proxy = proxy.get_file()
而不是:
afile = proxy.get_file()
我可以在服务器端重新绑定此对象并在客户端处理此类情况,但这需要一些样板代码。是否有机制/库可以为我做这个?例如,它可以保持对象远程,直到它们是原始对象。
答案 0 :(得分:2)
我找到了一个完全符合我需要的库:RPyC。来自intro:
无论如何,谢谢你指出一个'参考'一词。 :)
答案 1 :(得分:1)
我参与开发一个新的远程对象交互框架Versile Python(VPy),它执行与您列出的相似的功能。 VPy正在开发中,目前的版本主要用于测试,但请随时查看。
有两种方法可以执行您使用VPy描述的远程I / O类型。一种是使用远程native object引用,例如文件对象类似于Pyro / RPyC,并访问那些类似于本地的对象。
另一种选择是使用VPy远程stream框架,该框架非常灵活,可以配置为执行双向流和操作,例如远程重新定位或截断流。第二种方法的优点是它可以实现异步I / O加上流框架分割数据传输,以减少往返延迟的影响。
答案 2 :(得分:0)
afile_proxy = proxy.get_file_proxy()
在API中定义FileProxy
对象是什么。这完全取决于客户端需要对代理执行的操作。那个名字?删除它?获取其内容?
如果你想要的是跟踪你想要处理的事情,你甚至可以使用引用(可能是URL)。这是在网络上完成的所有嵌入内容,如图像。