RPC python

来源:互联网 发布:2017网络电影 编辑:程序博客网 时间:2024/06/03 09:12

转载,记载以下

一、SimpleXMLRPCServer


SimpleXMLRPCServer :python 自 带的一个 RPC 库;

RPC的传输协议:UDP、TCP、HTTP、XXXP;

RPC的数据 协议有xml、json、各种私有二 进制协议(hessian amf3 … . )。  大公司的 google 的protocolbuffer,facebook的thrift 。


1.1 一个最 简单的 RPC  服 务器端

from SimpleXMLRPCServer import SimpleXMLRPCServer

def add(a , b):

return a+b

server = SimpleXMLRPCServer(("localhost", 8000))

server.register_function(add)

server.serve_forever()


测试客户端

from xmlrpclib import ServerProxy

server = ServerProxy("http://localhost:8000")

try:

ret = server.add(30,90)

print 'result:', ret

print 'result type:', type(ret)

except Exception as ex:

print "exception", ex

1.2  服 务器客户端都干了什么?

1  从客 户端打印出通讯的数据:

发向服务器的:

POST /RPC2 HTTP/1.0

Host: localhost:8000

User-Agent: xmlrpclib.py/1.0.1 (by  www.pythonware.com )

Content-Type: text/xml

Content-Length: 189

<?xml version='1.0'?>

<methodCall>

<methodName>add</methodName>

<params>

<param><value><int>30</int></value></param>

<param><value><int>90</int></value></param>

</params>

</methodCall>

 

 

2  服 务器返回的数据:

HTTP/1.0 200 OK'

Server: BaseHTTP/0.3 Python/2.6.1

Date: Mon, 20 Jul 2009 05:33:09 GMT

Content-type: text/xml

Content-length: 123

<?xml version='1.0'?>

<methodResponse>

<params><param><value><int>120</int></value></param></params>

</methodResponse>

特点:   http 协议传输协议, xml 做数据 协议应用协议。

因 为 http 只作 为传输协议   所以只使用了 post 方法。


引用自:http://hi.baidu.com/daochayijiao/item/79ef7ff4edf0a525753c4ce3


二、rfoo 在网上看到的python rpc调用包,听说不错,记录一下.


rfoo 是一个 Python 的 RPC 远程过程调用包,可在一台普通的PC上每秒钟执行超过13000次远程方法调用,包含一个性能非常高的 rfoo.marsh 的对象序列化库,rfoo 需要 Cython 的支持。


啊里云上安装过程如下:

1、yum install gcc python-devel python-setuptools;

2、easy_install Cython;

3、下载rfoo源文件解压后执行(1)python setup.py install (2)python setup.py build_ext --inplace。

0 0
原创粉丝点击