您的位置:首页 > 编程语言 > Python开发

python--RPC调用简单实现

2013-05-15 19:27 716 查看
服务端的实现:

import SimpleXMLRPCServer,os
running=True
funs=['add','minus','exit','getCurrentList','linuxCmd']

#new code解决rpc调用速度慢
#每次返回的时候BaseHTTPRequestHandler 都会调用log_message 方法记录一些日志信息,而log_message方法需要知道请求的host 。
# 问题就出在这里,当没有host的时候程序会调用_socket 的gethostname()方法,而服务器上并没有配置驿应的host。
import BaseHTTPServer
def not_insane_address_string(self):
host, port = self.client_address[:2]
return '%s (no getfqdn)' % host #used to call: socket.getfqdn(host)
BaseHTTPServer.BaseHTTPRequestHandler.address_string =\
not_insane_address_string

#end new code
class ExposeFuns(object):
def add(self,a,b):
return a+b
def minus(self,a,b):
return a-b
def exit(self):
global running
running=False
return 'exit!'
def getCurrentList(self):
return os.getcwd()
def listDir(self,dir):
return os.listdir(dir)
def linuxCmd(self,dir):
return os.popen(dir).read()
def useage(self):
return funs;
server= SimpleXMLRPCServer. SimpleXMLRPCServer(('localhost',8000))
server.register_instance(ExposeFuns())
#server.register_function(add)
while running:
server.handle_request()


客户端的实现:

import xmlrpclib
server=xmlrpclib.Server('http://127.0.0.1:8000')
print server.add(5,88)
print server.minus(server.add(5,88),5)
print server.finis()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: