python实现rpc框架_Python-RPC框架之-ZeroRPC和SimpleXMLRPCServer

本文对比了Python中三种RPC框架:SimpleXMLRPCServer(基础实现,效率较低),ZeroRPC(基于ZeroMQ和MessagePack,速度快,适合高并发)以及gRPC(谷歌出品,跨语言支持)。通过示例代码展示了服务端和客户端的实现,强调了ZeroRPC在性能和响应时间上的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 Python中RPC框架

自带的:SimpleXMLRPCServer(数据包大,速度慢)

第三方:ZeroRPC(底层使用ZeroMQ和MessagePack,速度快,响应时间短,并发高),grpc(谷歌推出支持夸语言)

二 SimpleXMLRPCServer使用

服务端

from xmlrpc.server import SimpleXMLRPCServer

class RPCServer(object):

def __init__(self):

super(RPCServer, self).__init__()

print(self)

self.send_data = 'lqz nb'

self.recv_data = None

def getObj(self):

print('get data')

return self.send_data

def sendObj(self, data):

print('send data')

self.recv_data = data

print(self.recv_data)

# SimpleXMLRPCServer

server = SimpleXMLRPCServer(('localhost',4242), allow_none=True)

server.register_introspection_functions()

server.register_instance(RPCServer())

server.serve_forever()

客户端

import time

from xmlrpc.client import ServerProxy

# SimpleXMLRPCServer

def xmlrpc_client():

print('xmlrpc client')

c = ServerProxy('http://localhost:4242')

data = 'lqz nb'

start = time.clock()

for i in range(500):

a=c.getObj()

print(a)

for i in range(500):

c.sendObj(data)

print('xmlrpc total time %s' % (time.clock() - start))

if __name__ == '__main__':

xmlrpc_client()

三 ZeroRPC使用

服务端

import zerorpc

class RPCServer(object):

def __init__(self):

super(RPCServer, self).__init__()

print(self)

self.send_data = 'lqz nb'

self.recv_data = None

def getObj(self):

print('get data')

return self.send_data

def sendObj(self, data):

print('send data')

self.recv_data = data

print(self.recv_data)

# zerorpc

s = zerorpc.Server(RPCServer())

s.bind('tcp://0.0.0.0:4243')

s.run()

客户端

import zerorpc

import time

# zerorpc

def zerorpc_client():

print('zerorpc client')

c = zerorpc.Client()

c.connect('tcp://127.0.0.1:4243')

data = 'lqz nb'

start = time.clock()

for i in range(500):

a=c.getObj()

print(a)

for i in range(500):

c.sendObj(data)

print('total time %s' % (time.clock() - start))

if __name__ == '__main__':

zerorpc_client()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值