【脚本语言系列】关于Python远程调用,你需要知道的事

来源:互联网 发布:青岛中山路美食 知乎 编辑:程序博客网 时间:2024/06/06 03:42

如何使用远程过程调用

  • 服务器端
    1. 提供函数
    2. 绑定地址和端口
    3. 注册函数
    4. 启动服务器并等待
      ——-
    5. 获取被调用函数名
    6. 调用函数并返回结果
  • 客户端
    1. 连接服务器
    2. 调用函数
      ——-
    3. 接收结果

xmlrpc

# -*- coding:utf-8 -*-import xmlrpclibfrom SimpleXMLRPCServer import SimpleXMLRPCServer# serverdef double(num):    return num * 2server = SimpleXMLRPCServer(("localhost",6789))server.register_function(double, "double")server.serve_forever()
# -*- coding:utf-8 -*-import xmlrpclib# clientproxy = xmlrpclib.ServerProxy("http://localhost:6789/")num = 7result = proxy.double(num)print("Double %s is %s" %(num, result))

msgpackrpc

# -*- coding:utf-8 -*-from msgpackrpc import Server, Address# serverclass Services():    def double(num):        return num * 2server = Server(Services())    server.listen(Address("localhost",6789))server.start()
# -*- coding:utf-8 -*-from msgpackrpc import Client, Address# clientclient = Client(Address("http://localhost",6789))num = 7result = client.call("double",num)print("Double %s is %s" %(num, result))

fabric

# -*- coding:utf-8 -*-from fabric.api import rundef iso():    run('date -u')#  fab -f temp_server.py -H localhost iso

salt(基于ZeroMQ,fabric)

puppet

chef

ansible(fabric)

什么是远程过程调用

远程过程调用(RPC)类似在联网的远程机器上,运行函数。
RPC由RPC客户端和远程机器组成;
RPC客户端的工作原理
1. 编码/编组/序列化,即把函数参数转化为比特

2. 数据发送,即把比特发送给远程机器

  1. 数据接收,即接收转码后的比特
  2. 反序列化,即把比特转化为函数返回值
    远程机器的工作原理
  3. 数据接收,即接收转码后的比特
  4. 反序列化,即把比特转化为函数参数
  5. 函数调用,即查找本地目标函数并调用,之后输出函数返回值
  6. 编码/编组/序列化,即把函数返回值转化为比特
    5 数据发送,即把比特发送给RPC客户端

为何使用远程过程调用

通过联网的机器,可以操作更多的进程和线程。

阅读全文
0 0
原创粉丝点击