pythonRPC调用简单实现

服务端的实现:

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


原文地址:https://www.cnblogs.com/javawebsoa/p/3080476.html