使用XML庫(kù)的方式,實(shí)現(xiàn)RPC通信的方法(推薦)
1、先說(shuō)結(jié)論:使用xml-rpc的機(jī)制可以很方便的實(shí)現(xiàn)服務(wù)器間的RPC調(diào)用。
2、試驗(yàn)結(jié)果如下:
3、源碼如下:
服務(wù)器端的源代碼如下:
import operator, math from SimpleXMLRPCServer import SimpleXMLRPCServer from functools import reduce def main(): server = SimpleXMLRPCServer(('127.0.0.1', 7001)) server.register_introspection_functions() server.register_multicall_functions() server.register_function(addtogether) server.register_function(quadratic) server.register_function(remote_repr) print("Server ready") server.serve_forever() def addtogether(*things): """Add together everything in the list things .""" return reduce(operator.add, things) def quadratic(a, b, c): """Determine x values satisfying: a * x * x + b * x + c = 0""" b24ac = math.sqrt(b*b - 4.0*a*c) return list(set([(-b-b24ac) / 2.0*a, (-b+b24ac) / 2.0*a])) def remote_repr(arg): """return the repr() rendering of the supplied arg """ return arg if __name__ == '__main__': main()
客戶端的代碼如下:
import xmlrpclib def main(): proxy = xmlrpclib.ServerProxy('http://127.0.0.1:7001') print("Here are the functions supported by this server:") print("next calculator addtogether: ") print(proxy.addtogether('x','y','z')) print(proxy.addtogether('x','y','z')) print(proxy.addtogether('x','y','z')) print(proxy.addtogether('x','y','z')) for method_name in proxy.system.listMethods(): if method_name.startswith('system.'): continue signatures = proxy.system.methodSignature(method_name) if isinstance(signatures, list) and signatures: for signature in signatures: print('%s(%s)' %(method_name, signature)) else: print('%s(...)' %(method_name,)) method_help = proxy.system.methodHelp(method_name) #if method_help: # print(' ', methodHelp) print(proxy.addtogether('x','y','z')) print("addtogether result ") if __name__ == '__main__': main()
以上這篇使用XML庫(kù)的方式,實(shí)現(xiàn)RPC通信的方法(推薦)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python利用Diagrams繪制漂亮的系統(tǒng)架構(gòu)圖
Diagrams 是一個(gè)基于Python繪制云系統(tǒng)架構(gòu)的模塊,它能夠通過(guò)非常簡(jiǎn)單的描述就能可視化架構(gòu)。本文將利用它繪制漂亮的系統(tǒng)架構(gòu)圖,感興趣的可以了解一下2023-01-01通過(guò)PHP與Python代碼對(duì)比的語(yǔ)法差異詳解
這篇文章主要介紹了通過(guò)PHP與Python代碼對(duì)比淺析語(yǔ)法差異,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07利用python模擬實(shí)現(xiàn)POST請(qǐng)求提交圖片的方法
最近在利用python做接口測(cè)試,其中有個(gè)上傳圖片的接口,在網(wǎng)上各種搜索,各種嘗試。下面這篇文章主要給大家介紹了關(guān)于利用python模擬實(shí)現(xiàn)POST請(qǐng)求提交圖片的相關(guān)資料,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-07-07python中@contextmanager裝飾器的用法詳解
這篇文章主要介紹了python中@contextmanager裝飾器的用法詳解,@contextmanager 的作用就是我們可以把一個(gè)非自定義類改成一個(gè)上下文管理器,需要的朋友可以參考下2023-07-07Python列表去重復(fù)項(xiàng)的N種方法(實(shí)例代碼)
這篇文章主要介紹了Python列表去重復(fù)項(xiàng)的N種方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05Python接口測(cè)試結(jié)果集實(shí)現(xiàn)封裝比較
這篇文章主要介紹了Python接口測(cè)試結(jié)果集比較封裝,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05