Python 远程过程调用

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

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

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

 

1. 运行服务器

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

 
# Filename : example.py
# Copyright : 2020 By Codebaoku
# Author by : www.codebaoku.com
# Date : 2020-08-25
$ python bin/classic.py

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

 
# Filename : example.py
# Copyright : 2020 By Codebaoku
# Author by : www.codebaoku.com
# Date : 2020-08-25
INFO:SLAVE/18812:server started on [127.0.0.1]:18812

 

2. 运行客户端

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

 
# Filename : example.py
# Copyright : 2020 By Codebaoku
# Author by : www.codebaoku.com
# Date : 2020-08-25
import rpyc
conn = rpyc.classic.connect("localhost")
conn.execute("print('Hello from codebaoku')")

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

# Filename : example.py
# Copyright : 2020 By Codebaoku
# Author by : www.codebaoku.com
# Date : 2020-08-25
Hello from codebaoku

3. 通过RPC进行表达评估

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

 
# Filename : example.py
# Copyright : 2020 By Codebaoku
# Author by : www.codebaoku.com
# Date : 2020-08-25
import rpyc
conn = rpyc.classic.connect("localhost")
conn.execute('import math')
conn.eval('2*math.pi')

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

 
# Filename : example.py
# Copyright : 2020 By Codebaoku
# Author by : www.codebaoku.com
# Date : 2020-08-25
6.283185307179586