码迷,mamicode.com
首页 > 其他好文 > 详细

ZeroRPC和SimpleXMLRPCServer

时间:2021-06-16 17:43:15      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:over   san   tom   http   sel   init   child   print   rgba   

一、Python中RPC框架

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

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

 

二、SimpleSMLRPCServer使用

服务端

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()

 

 

 

 

  1. 一 Python中RPC框架
  2. 二 SimpleXMLRPCServer使用
    1. 服务端
    2. 客户端
  3. 三 ZeroRPC使用
    1. 服务端
    2. 客户端

ZeroRPC和SimpleXMLRPCServer

标签:over   san   tom   http   sel   init   child   print   rgba   

原文地址:https://www.cnblogs.com/ZhZhang12138/p/14887152.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!