Python Network Programming 简明教程

Python - Remote Procedure Call

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

  1. 您可以使用 rpc 利用多台计算机的处理能力,而无需更改代码以调用位于远程系统中的程序。

  2. 处理所需的数据仅在远程系统中可用。

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

Running a Server

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

python bin/classic.py

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

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

Running a Client

接下来,我们使用 rpyc 模块运行客户端以执行远程过程调用。在下面的示例中,我们在远程服务器中执行 print 函数。

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

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

Hello from Tutorialspoint

Expression Evaluation through RPC

使用上述代码示例,我们可以通过 rpc 使用 Python 的内置函数进行表达式执行和求值。

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

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

6.283185307179586