python–RPC調用簡單實現

來源:互聯網
上載者:User

服務端的實現:

 

import SimpleXMLRPCServer,osrunning=Truefuns=['add','minus','exit','getCurrentList','linuxCmd']
#new code解決rpc調用速度慢#每次返回的時候BaseHTTPRequestHandler 都會調用log_message 方法記錄一些日誌資訊,而log_message方法需要知道請求的host 。# 問題就出在這裡,當沒有host的時候程式會調用_socket 的gethostname()方法,而伺服器上並沒有配置驛應的host。import BaseHTTPServerdef 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 codeclass 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 xmlrpclibserver=xmlrpclib.Server('http://127.0.0.1:8000')print server.add(5,88)print server.minus(server.add(5,88),5)print server.finis()

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.