最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2019年01月11日 14:20:56   作者:comprel  
今天小編就為大家分享一篇python遠程調用rpc模塊xmlrpclib的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

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

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

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

在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) 方法簽名,是一個數(shù)組類型

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

例如一個簡單的示例:

服務端:

import xmlrpclib
from SimpleXMLRPCServer import SimpleXMLRPCServer

def get_power(n,m):
 return n**m

server = 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 xmlrpclib

server_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 = 9
2**5 = 32

xmlrpclib提供的一些方法:

class xmlrpclib.DateTime 時間對象

例如:

服務端:

import datetime
from SimpleXMLRPCServer import SimpleXMLRPCServer
import xmlrpclib

def 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 xmlrpclib
import datetime

s = 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")

結果:

服務端

# python rpc_time.py 
start service on 0.0.0.0 8081...

192.168.137.9 - - [22/May/2017 10:43:19] "POST / HTTP/1.1" 200 -

客服端:

# python rpc_time_client.py 
Today: 22.05.2017, 10:43

2.class xmlrpclib.Binary 二進制對象

3.class xmlrpclib.Fault fault對象

如:

客服端:

import xmlrpclib

s = xmlrpclib.ServerProxy("http://192.168.137.9:8081/")
try:
 s.add(2, 5)
except xmlrpclib.Fault as err:
 print "A fault occurred"
 print "Fault code: %d" % err.faultCode
 print "Fault string: %s" % err.faultString

class xmlrpclib.MultiCall(server) 提供多個調用,復合調用:

例如:

from SimpleXMLRPCServer import SimpleXMLRPCServer

def add(x,y):
 return x+y

def subtract(x, y):
 return x-y

def multiply(x, y):
 return x*y

def divide(x, y):
 return x/y

def get_power(n,m):
 return n**m

server = SimpleXMLRPCServer(("0.0.0.0", 8081))
print "start service on 0.0.0.0 8081..."

server.register_multicall_functions()
server.register_function(add, 'add')
server.register_function(subtract, 'subtract')
server.register_function(multiply, 'multiply')
server.register_function(divide, 'divide')
server.register_function(get_power, 'get_power')
server.serve_forever() 

客服端:

import xmlrpclib

s = xmlrpclib.ServerProxy("http://192.168.137.9:8081/")
multicall = xmlrpclib.MultiCall(s)
multicall.add(7,3)
multicall.subtract(7,3)
multicall.multiply(7,3)
multicall.divide(7,3)
multicall.get_power(7,3)
result = multicall()

print "7+3=%d, 7-3=%d, 7*3=%d, 7/3=%d 7**3=%d" % tuple(result)

服務端:

# python mul_xmlserver.py 
start service on 0.0.0.0 8081...

192.168.137.9 - - [22/May/2017 10:51:59] "POST / HTTP/1.1" 200 -

客服端:

# python mul_xmlclient.py 
7+3=10, 7-3=4, 7*3=21, 7/3=2 7**3=343

另外xmlrpc還提供有比較快捷的函數(shù):

1.xmlrpclib.boolean(value) 將任意的python值轉換成xmlrpc的布爾類型True/False

2.xmlrpclib.dumps(params[, methodname[, methodresponse[, encoding[, allow_none]]]])

params請求轉換為xml

3.xmlrpclib.loads(data[, use_datetime])

將一個xml-rpc的請求轉換成python對象

例如:

from xmlrpclib import ServerProxy, Error

server = ServerProxy("http://betty.userland.com")

print server

try:
 print server.examples.getStateName(41)
except Error as err:
 print "ERROR", err

客服端:

import xmlrpclib, httplib

class ProxiedTransport(xmlrpclib.Transport):
 def set_proxy(self, s):
  self.s = s

 def make_connection(self, host):
  self.realhost = host
  h = httplib.HTTPConnection(self.s)
  return h

 def send_request(self, connection, handler, request_body):
  connection.putrequest("POST", 'http://%s%s' % (self.realhost, handler))

 def send_host(self, connection, host):
  connection.putheader('Host', self.realhost)

p = ProxiedTransport()
p.set_proxy('proxy-server:8080')
server = xmlrpclib.ServerProxy('http://time.xmlrpc.com/RPC2', transport=p)
print server.currentTime.getCurrentTime()

以上這篇python遠程調用rpc模塊xmlrpclib的方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 對python中的*args與**kwgs的含義與作用詳解

    對python中的*args與**kwgs的含義與作用詳解

    今天小編就為大家分享一篇對python中的*args與**kwgs的含義與作用詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • Python?pluggy模塊的用法示例演示

    Python?pluggy模塊的用法示例演示

    這篇文章主要介紹了Python?pluggy模塊的用法,pluggy提供了一個簡易便捷的插件系統(tǒng),可以做到插件與主題功能松耦合,pluggy?是pytest,tox,devpi的核心框架文中通過代碼示例演示給大家詳細介紹,需要的朋友參考下吧
    2022-05-05
  • Python global全局變量函數(shù)詳解

    Python global全局變量函數(shù)詳解

    本文詳解了global全局變量函數(shù)的用法,還有global的作用。global全局變量在一個腳本中全部作用域都可以訪問,用法很方便,希望本文對大家有所幫助
    2018-09-09
  • python使用socket實現(xiàn)圖像傳輸功能

    python使用socket實現(xiàn)圖像傳輸功能

    這篇文章主要為大家詳細介紹了python使用socket實現(xiàn)圖像傳輸功能,linux服務器與win10主機間的圖像傳輸,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • pandas Dataframe行列讀取的實例

    pandas Dataframe行列讀取的實例

    今天小編就為大家分享一篇pandas Dataframe行列讀取的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • Python調用易語言動態(tài)鏈接庫實現(xiàn)驗證碼功能

    Python調用易語言動態(tài)鏈接庫實現(xiàn)驗證碼功能

    今天成功把易語言調用驗證碼通殺的DLL在Python中成功調用了,心理美滋滋的,接著把我的經驗及示例代碼分享給大家,希望對大家有所幫助
    2021-08-08
  • Python標準庫os庫的常用功能解析

    Python標準庫os庫的常用功能解析

    這篇文章主要介紹了Python標準庫os庫的常用功能解析,os庫是Python標準庫之一,它提供了非常豐富的文件及目錄讀寫的方法
    2022-07-07
  • Python求解任意閉區(qū)間的所有素數(shù)

    Python求解任意閉區(qū)間的所有素數(shù)

    本篇文章是一篇關于python求素數(shù)的知識點內容,如果大家在應用中有用的到,不妨跟著學習下。
    2018-06-06
  • 使用python求解迷宮問題的三種實現(xiàn)方法

    使用python求解迷宮問題的三種實現(xiàn)方法

    關于迷宮問題,常見會問能不能到達某點,以及打印到達的最短路徑,下面這篇文章主要給大家介紹了關于如何使用python求解迷宮問題的三種實現(xiàn)方法,需要的朋友可以參考下
    2022-03-03
  • 利用Python第三方庫xlrd讀取Excel中數(shù)據實例代碼

    利用Python第三方庫xlrd讀取Excel中數(shù)據實例代碼

    python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫,下面這篇文章主要給大家介紹了關于利用Python第三方庫xlrd讀取Excel中數(shù)據的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-07-07

最新評論

资溪县| 报价| 平山县| 马关县| 门源| 阿拉善盟| 兴义市| 镶黄旗| 巴楚县| 灌阳县| 全州县| 康乐县| 武川县| 南川市| 泗洪县| 望奎县| 东至县| 甘南县| 肇源县| 哈巴河县| 南京市| 泊头市| 西贡区| 方城县| 鸡东县| 定南县| 乐安县| 上高县| 汪清县| 龙里县| 治多县| 讷河市| 波密县| 武冈市| 原平市| 张家港市| 曲靖市| 宁夏| 仁寿县| 南郑县| 安西县|