国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開發(fā) > Python > 正文

python遠(yuǎn)程調(diào)用rpc模塊xmlrpclib的方法

2024-09-09 19:02:29
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

RPC(Remote Procedure Call Protocol)是遠(yuǎn)程調(diào)用協(xié)議,它通過(guò)網(wǎng)絡(luò)請(qǐng)求服務(wù)到遠(yuǎn)端服務(wù)器,服務(wù)器根據(jù)請(qǐng)求做出響應(yīng),將結(jié)果返回

它是一種C/S模式,客戶端可以調(diào)用遠(yuǎn)程服務(wù)器上的參數(shù)(類似URL)并返回結(jié)果

利用rpc可以實(shí)現(xiàn)系統(tǒng)的分布式架構(gòu),可以將功能分解到多臺(tái)服務(wù)器上進(jìn)行實(shí)現(xiàn),同時(shí)也將也可以將負(fù)載打散,分布到不同服務(wù)器上,整合計(jì)算資源

在openstack中就大量使用了rpc

rpc多使用http傳輸請(qǐng)求,格式有xml,json等,這里是xml

模塊:

xmlrpclib

注:xmlrpclib模塊在python3中重命名為xmlrpc.client

xmlrpc并不是很安全,但在2.7.9 https url中默認(rèn)加入了證書,主機(jī)名驗(yàn)證

定義:

class xmlrpclib.ServerProxy(uri[, transport[, encoding[, verbose[, allow_none[, use_datetime[, context]]]]]])

1.uri,即服務(wù)端的url地址

2.transport 傳輸實(shí)例,可選,https urls/http

3.encoding

4.verbose 是debug模式

5.allow_none 是否請(qǐng)求空 ,若為True,那么常量none將被翻譯成xml,默認(rèn)如果是none則拋出異常 TypeError

6.use_datetime 可以使用date/time values記錄調(diào)用時(shí)間datetime.datetime,默認(rèn)是false

ServerProxy對(duì)象提供一些默認(rèn)的方法:

1.ServerProxy.system.listMethods() 返回遠(yuǎn)端服務(wù)器方法列表

2.ServerProxy.system.methodSignature(name) 方法簽名,是一個(gè)數(shù)組類型

3.ServerProxy.system.methodHelp(name) 方法幫助信息

例如一個(gè)簡(jiǎn)單的示例:

服務(wù)端:

import xmlrpclibfrom SimpleXMLRPCServer import SimpleXMLRPCServerdef get_power(n,m): return n**mserver = SimpleXMLRPCServer(("0.0.0.0", 8081))print "start service get power on 0.0.0.0 8081..."server.register_function(get_power, "get_power")server.serve_forever()

客服端:

import xmlrpclibserver_power = xmlrpclib.ServerProxy("http://192.168.137.9:8081/")print "3**2 = %d" %(server_power.get_power(3,2))print "2**5 = %d" %(server_power.get_power(2,5))

結(jié)果:

服務(wù)端:

# python xml_server.py start service get power on 0.0.0.0 8081...192.168.137.9 - - [22/May/2017 10:37:47] "POST / HTTP/1.1" 200 -192.168.137.9 - - [22/May/2017 10:37:47] "POST / HTTP/1.1" 200 -

客服端:

# python xml_client.py 3**2 = 92**5 = 32

xmlrpclib提供的一些方法:

class xmlrpclib.DateTime 時(shí)間對(duì)象

例如:

服務(wù)端:

import datetimefrom SimpleXMLRPCServer import SimpleXMLRPCServerimport xmlrpclibdef today(): today = datetime.datetime.today() return xmlrpclib.DateTime(today)server = SimpleXMLRPCServer(("0.0.0.0", 8081))print "start service on 0.0.0.0 8081..."server.register_function(today, "today")server.serve_forever()

客服端:

import xmlrpclibimport datetimes = xmlrpclib.ServerProxy("http://192.168.137.9:8081/")today = s.today()converted = datetime.datetime.strptime(today.value, "%Y%m%dT%H:%M:%S")print "Today: %s" % converted.strftime("%d.%m.%Y, %H:%M")

結(jié)果:

服務(wù)端

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 亚东县| 基隆市| 凤城市| 东阿县| 双鸭山市| 济阳县| 莫力| 郑州市| 沙雅县| 浦东新区| 鹤庆县| 安丘市| 获嘉县| 龙游县| 卫辉市| 无极县| 兴和县| 大宁县| 青冈县| 青田县| 扶沟县| 东山县| 辰溪县| 苏尼特右旗| 丹凤县| 桐城市| 章丘市| 河源市| 大兴区| 中牟县| 西乌珠穆沁旗| 青冈县| 工布江达县| 阿巴嘎旗| 伊春市| 黔西| 正阳县| 社会| 祁门县| 板桥市| 西乌珠穆沁旗|