python--RPC调用简单实现

服务端的实现:

 

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


 

 

你可能感兴趣的:(python)