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

如何使用远程过程调用

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

xmlrpc

# -*- coding:utf-8 -*-
import xmlrpclib
from SimpleXMLRPCServer import SimpleXMLRPCServer
# server
def double(num):
    return num * 2

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

msgpackrpc

# -*- coding:utf-8 -*-
from msgpackrpc import Server, Address
# server
class Services():
    def double(num):
        return num * 2

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

fabric

# -*- coding:utf-8 -*-
from fabric.api import run
def 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值