远程机器上的python模块

Posted

技术标签:

【中文标题】远程机器上的python模块【英文标题】:python modules on remote machine 【发布时间】:2021-07-30 08:41:34 【问题描述】:

从主机 A 上的 python 程序,我希望能够调用远程机器 B 上的另一个 python 程序(包)/函数(通过 TCP/ip、ssh 隧道或类似的)。 A 和 B 有不同的操作系统(windows/linux)。 我希望能够传递(并作为返回值返回)任何 python(甚至更好的 numpy)类型。调用应该尽可能地看起来像普通的 python 调用。

通过命令行参数运行,写入/获取标准输入/输出(Popen ...)并不是我真正想要的(即使我知道 json 可以序列化任何东西......这最终可以工作)。函数参数/返回值也会很大(MBytes 或 GBytes)

我知道这也可以通过客户端/服务器和 TCP IP 套接字来完成,但在这里,这需要定义我自己的协议并维护双方...这实际上是我正在尝试替换的当前实现!

我想要一些更简单的东西,有点像能够在远程加载和运行 python 包...RPC 之类... 如果在遥控器上创建了一个新函数,主机应该能够调用它......

我用谷歌搜索了一下,我发现了一个叫做淘汰赛的东西,它的目的就是为了做到这一点(从远程主机导入 python 模块),但它看起来已经停产了。如果不是,我没有找到正确的 URL...我也担心远程和主机之间的 python 版本不匹配...

还有其他建议或提示吗?

【问题讨论】:

你尝试了什么?您是否在 Python 中搜索了 RPC 的模块? pyRPC 怎么样? 你想对数据做什么?你想在多台服务器上拆分它吗?也许您需要像 PySpark 或 Ray 这样在服务器上发送代码和数据的模块/工具 - 因此您不必在服务器上定义功能,但服务器必须运行 PySpar Server 或 Ray Server。 是的,我确实看过 PyRPC...不相信...我的目标真的是能够在其他地方调用函数。不是很花哨。原因是数据是从小型远程机器(SoC 上的 ARM 处理器)收集的,需要在其他地方(调用者)进行处理。我希望调用者能够询问数据,或者要求在 Soc 上执行不同的设置。 Python 模块已经存在于 Soc-.只需要从主机调用它... 据我所知,RPCPySpark 等模块需要在远程机器上运行服务器来获取数据和代码。更简单的方法可以是使用 SSH 连接上传带有代码 script.py 的文件,上传带有数据的文件并执行所有 python script.py data_file,然后下载带有输出的文件 - 它不必是 JSON,而是 csv 或文本文件由numpy 创建。这种方法不需要在远程机器上运行服务器,你也不需要在远程机器上创建新功能,因为你用数据发送它。也许使用Fabric 之类的工具会更简单。 【参考方案1】:

只是想更新那个帖子。 PyRPC 是我现在使用的。考虑到我的问题的简单性,这有点矫枉过正,而且错误报告并不像我希望的那样透明,但它适用于不同版本的 python,在我的情况下结果非常好

【讨论】:

以上是关于远程机器上的python模块的主要内容,如果未能解决你的问题,请参考以下文章

Python用MySQLdb, pymssql 模块通过sshtunnel连接远程数据库

Python多进程multiprocessing模块介绍

Python用MySQLdb, pymssql 模块通过sshtunnel连接远程数据库

深入探讨 Python 的 import 机制:实现远程导入模块

深入探讨 Python 的 import 机制:实现远程导入模块

python多进程——multiprocessing.Process