釋出一個基於 mprpc_config 二次封裝的 pip 包

weixin_34007291發表於2018-11-01

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 伺服器

    1. 初始化 mprpc_config 的 Configration 類,將 config.py 的模組名 config 作為字串傳入
    2. 匯入 mprpc_config.rpc_server 的 RPCServer 和 StreamServer,啟動 RPC 伺服器
    3. 使用 bind_class 方法將初始化後的所有 RPC 介面繫結給 RPCServer
    4. 使用 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 包
部落格:時空路由器

相關文章