摘要:是一個超快速的庫,最近一直在看的東西,考慮如何應用到公司的項目中,模仿的方式二次封裝了一下。示例示例代碼在目錄啟動和原文發布一個基于二次封裝的包博客時空路由器
mprpc 是一個超快速的Python RPC 庫,最近一直在看 RPC 的東西,考慮如何應用到公司的項目中,模仿 Celery 的方式二次封裝了一下。
項目地址: mprpc_config
安裝pip install mprpc_config用法
構建一個如下的目錄結構
config.py 包含RPC配置屬性(任意命名)
INSTALLED_APP 必填參數,list 類型,將每一個包含 RPC 接口的模塊名放進去
app_module_name RPC 接口模塊(任意命名,可有多個)
implement.py 接口模塊(任意命名,可有多個),里面包含 rpc 方法裝飾的接口函數
server.py RPC 服務器
初始化 mprpc_config 的 Configration 類,將 config.py 的模塊名 config 作為字符串傳入
導入 mprpc_config.rpc_server 的 RPCServer 和 StreamServer,啟動 RPC 服務器
使用 bind_class 方法將初始化后的所有 RPC 接口綁定給 RPCServer
使用 StreamServer 啟動 RPC 服務器
client.py RPC 客戶端(測試用,實際可分離)
客戶端啟動方式可參考 mprpc 。
示例示例代碼在 example 目錄
server.py
from mprpc_config.rpc_server import RPCServer, StreamServer from mprpc_config import rpc_config if __name__ == "__main__": print("-------start server--------") config = rpc_config.Configuration("config") config.bind_class(RPCServer) server = StreamServer(("127.0.0.1", 6000), RPCServer) server.serve_forever(stop_timeout=10)
client.py
from mprpc_config.rpc_client import RPCClient, RPCPoolClient from mprpc_config.rpc_client import RPCPool print("---------- client ----------") client = RPCClient("127.0.0.1", 6000) print("2 add 4: ", client.call("add", 2, 4)) print("2 plus 4: ", client.call("plus", 2, 4)) print("2 minus 4: ", client.call("minus", 2, 4)) print("---------- done ----------") print("---------- client pool ----------") client_pool = RPCPool(RPCPoolClient, dict(host="127.0.0.1", port=6000)) with client_pool.connection() as client: print("2 add 4: ", client.call("add", 2, 4)) print("2 plus 4: ", client.call("plus", 2, 4)) print("2 minus 4: ", client.call("minus", 2, 4)) print("---------- done ----------")
啟動 server 和 client
$ python server.py ---------- server ---------- $ python client.py ---------- client ---------- 2 add 4: 6 2 plus 4: 8 2 minus 4: -2 ---------- done ---------- ---------- client pool ---------- 2 add 4: 6 2 plus 4: 8 2 minus 4: -2 ---------- done ----------
原文:發布一個基于 mprpc_config 二次封裝的 pip 包
博客:時空路由器
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/44908.html
摘要:項目介紹是一個全新的語言的運行時環境,基于目前最新的進行打造,支持最新的語言規范,同時提供了自己的運行時標準庫。同樣也在的基礎上進行打造,實現了一個除開發之外的一個全新的運行環境。發布核心虛擬機的鏡像。整合運行時框架。 showImg(https://segmentfault.com/img/bVbnQXK); polarphp 項目介紹 polarphp是一個全新的PHP語言的運行時...
摘要:做數據分析,,你值得擁有。的包管理器有和,本來是很方便的。另外,本身還提供了包管理器來安裝或升級相應的包。八斬刀是詠春中最厲害的兵器,是一條大蟒蛇,翻譯為水蟒。如果數據科學是武俠中的詠春,那么便是數據科學中的八斬刀。 摘要:武俠,是成人的童話。江湖,是門派的斗爭。數據科學已經開山立派,Python便是其中獨領風搔的兵器。如果數據科學是IT武俠中的詠春,那么Anaconda便是數據科學中...
摘要:本文為教程的第二部分,主要以微信控制器群發助手好友刪除檢測為例演示如何調用微信。教程流程簡介這一系列教程從如何分析微信協議開始,第一部分教你如何從零開始獲取并模擬擴展個人微信號所需要的協議。 現在的日常生活已經離不開微信,本文將會拋磚引玉演示如何使用Python調用微信API做一些有意思的東西。 看完這一系列教程,你就能從頭開始實現自己關于微信的想法。 本文為教程的第二部分,主要以微信...
摘要:三實踐案例案例簡介分布式系統中,微服務基礎組件等,系統中間件,等,對常用功能配置等,進行二次淺封裝并統一集成管理,以滿足日常開發中基礎環境搭建與臨時工具的快速實現。 一、背景簡介 分布式系統中存在很多拆分的服務,在不斷迭代升級的過程中,會出現如下常見的棘手情況: 某個技術組件版本升級,依賴包升級導致部分語法或者API過期,或者組件修復緊急的問題,從而會導致分布式系統下各個服...
摘要:在只有少量服務器的情況下,大多數運維人員會選擇手動更新,減少自動化部署發布的開發成本。五自動化部署發布示例簡要說明下我們的項目如何使用實現了多個環境的自動化部署發布。 showImg(https://segmentfault.com/img/bVJEL6?w=500&h=250); 一、面臨的問題 一個完整的程序開發流程少不了部署發布這個環節,而部署發布是一個重復的過程,最基本的操作包...
閱讀 3195·2021-11-10 11:35
閱讀 1303·2019-08-30 13:20
閱讀 1124·2019-08-29 16:18
閱讀 2137·2019-08-26 13:54
閱讀 2163·2019-08-26 13:50
閱讀 964·2019-08-26 13:39
閱讀 2480·2019-08-26 12:08
閱讀 1956·2019-08-26 10:37