Python RPC 之 xml-rpc

xml-rpc 簡介:

xml-rpc 的全稱是 XML Remote Procedure Call,即XML遠(yuǎn)程方法調(diào)用。它是一套基于 Internet 過程調(diào)用而實(shí)現(xiàn)了平臺無關(guān)性與語言無關(guān)性的標(biāo)準(zhǔn)規(guī)范。不同語言有不同 xml-rpc 實(shí)現(xiàn),本篇主要介紹 python 的 xml-rpc 實(shí)現(xiàn)。

安裝 xml-rpc:

python sdk 原生支持了xml-rpc,所以只要安裝了python sdk 就可以使用xml-rpc了。

實(shí)踐:

下面我們使用 xml-rpc 定義一個接口,該接口實(shí)現(xiàn)對傳入的數(shù)據(jù)進(jìn)行大寫的格式化處理。

  • 創(chuàng)建 xmlrpc_demo python 工程:
Paste_Image.png
  1. client 目錄下的 client.py 實(shí)現(xiàn)了客戶端用于發(fā)送數(shù)據(jù)并打印接收到 server 端處理后的數(shù)據(jù)
  1. server 目錄下的 server.py 實(shí)現(xiàn)了服務(wù)端用于接收客戶端發(fā)送的數(shù)據(jù),并對數(shù)據(jù)進(jìn)行大寫處理后返回給客戶端
  • 實(shí)現(xiàn) server 端:
#! /usr/bin/env python
# -*- coding: utf-8 -*-

__author__ = 'xieyanke'

from xmlrpc.server import SimpleXMLRPCRequestHandler, SimpleXMLRPCServer

__HOST = 'localhost'
__PORT = '8008'


class RPCHandler(SimpleXMLRPCRequestHandler):
    rpc_paths = (
        '/',   # 定義 RPC 接口的請求地址
    )


with SimpleXMLRPCServer((__HOST, __PORT), requestHandler=RPCHandler) as rpcserver:
    rpcserver.register_introspection_functions()


    def formate_data(str):
        return str.upper()


    rpcserver.register_function(formate_data, 'formate_data')  # 這里 'formate_data' 可以不與自定義的方法名字相同,只要 server 端與 client 端做好約定即可

    rpcserver.serve_forever()
  • 實(shí)現(xiàn) client 端:
#! /usr/bin/env python
# -*- coding: utf-8 -*-

__author__ = 'xieyanke'

import xmlrpc.client

__HOST = 'localhost'
__PORT = '8080'

server = xmlrpc.client.ServerProxy('http://' + __HOST + ':' + __PORT + '/')  # 這里需要注意的是結(jié)尾的 ‘/' 必須存在,如果不綁定根,xmlrpc client 默認(rèn)綁定的 url 為 host:port/RPC2 

print(server.formate_data('hello,world!'))
  • 執(zhí)行驗(yàn)證結(jié)果:
  1. 先啟動 server,之后再執(zhí)行 client
  1. client 側(cè)控制臺如果打印的結(jié)果為: HELLO,WORLD! ,證明 xml-rpc 接口定義成功

  • 交流可以加 QQ 群:397234385
  • 或者 QQ 掃碼入群:
qq群.jpg
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評論 19 139
  • # Python 資源大全中文版 我想很多程序員應(yīng)該記得 GitHub 上有一個 Awesome - XXX 系列...
    aimaile閱讀 26,823評論 6 427
  • 轉(zhuǎn)自:http://blog.csdn.net/kesonyk/article/details/50924489 ...
    晴天哥_王志閱讀 25,329評論 2 38
  • GitHub 上有一個 Awesome - XXX 系列的資源整理,資源非常豐富,涉及面非常廣。awesome-p...
    若與閱讀 19,305評論 4 417
  • 兔子吃掉樹上的山楂 傍晚母親立在門口的石頭上 胃里翻江倒海 夜晚騎著馬 我忽然聞到了雨的味道 風(fēng)害羞地藏起來 漆黑...
    在窗臺閱讀 239評論 6 1

友情鏈接更多精彩內(nèi)容