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

首頁 > 編程 > Python > 正文

python遠程調用rpc模塊xmlrpclib的方法

2020-02-16 00:36:24
字體:
來源:轉載
供稿:網友

RPC(Remote Procedure Call Protocol)是遠程調用協議,它通過網絡請求服務到遠端服務器,服務器根據請求做出響應,將結果返回

它是一種C/S模式,客戶端可以調用遠程服務器上的參數(類似URL)并返回結果

利用rpc可以實現系統的分布式架構,可以將功能分解到多臺服務器上進行實現,同時也將也可以將負載打散,分布到不同服務器上,整合計算資源

在openstack中就大量使用了rpc

rpc多使用http傳輸請求,格式有xml,json等,這里是xml

模塊:

xmlrpclib

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

xmlrpc并不是很安全,但在2.7.9 https url中默認加入了證書,主機名驗證

定義:

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

1.uri,即服務端的url地址

2.transport 傳輸實例,可選,https urls/http

3.encoding

4.verbose 是debug模式

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

6.use_datetime 可以使用date/time values記錄調用時間datetime.datetime,默認是false

ServerProxy對象提供一些默認的方法:

1.ServerProxy.system.listMethods() 返回遠端服務器方法列表

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

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

例如一個簡單的示例:

服務端:

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

結果:

服務端:

# 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 時間對象

例如:

服務端:

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

客服端:

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 安宁市| 伊金霍洛旗| 贺州市| 民丰县| 九江县| 六盘水市| 南昌市| 东城区| 中宁县| 天水市| 广宁县| 揭西县| 博白县| 凌云县| 三河市| 旬阳县| 安化县| 吉木乃县| 榆中县| 温州市| 福海县| 民县| 德昌县| 长岭县| 远安县| 文山县| 朝阳区| 罗甸县| 华坪县| 项城市| 多伦县| 嘉义县| 高青县| 三河市| 巫溪县| 左云县| 全州县| 滕州市| 文登市| 原阳县| 万年县|