Python 远程过程调用


远程过程调用 (RPC) 系统使你能够使用调用本地库中的函数时使用的相同语法调用远程服务器上可用的函数。这在两种情况下很有用。

  • 你可以使用 rpc 来利用多台机器的处理能力,而无需更改用于调用位于远程系统中的程序的代码。
  • 处理所需的数据仅在远程系统中可用。

因此,在 python 中,我们可以将一台机器视为服务器,将另一台机器视为客户端,它将调用服务器以运行远程过程。在我们的示例中,我们将使用 localhost 并将其用作服务器和客户端。

运行服务器


python 语言带有一个内置服务器,我们可以将其作为本地服务器运行。运行此服务器的脚本位于 python 安装的 bin 文件夹下,命名为 classic.py。我们可以在 python 提示符下运行它并检查它是否作为本地服务器运行。

python bin/classic.py

当我们运行上面的程序时,我们得到如下输出:

INFO:SLAVE/18812:server started on [127.0.0.1]:18812

运行客户端


接下来我们使用 rpyc 模块运行客户端来执行远程过程调用。在下面的示例中,我们在远程服务器中执行打印功能。

import rpyc
conn = rpyc.classic.connect("localhost")
conn.execute("print('Hello from Newbiego')")

当我们运行上面的程序时,我们得到如下输出:

Hello from Newbiego

通过 RPC 进行表达式评估


使用上面的代码示例,我们可以使用 python 的内置函数通过 rpc 执行和评估表达式。

import rpyc
conn = rpyc.classic.connect("localhost")
conn.execute('import math')
conn.eval('2*math.pi')

当我们运行上面的程序时,我们得到如下输出:

6.283185307179586