推薦一款 Python 微服務框架 - Nameko
1. 前言
大家好,我是安果!
考慮到 Python 效能及效率性,Python Web 端一直不溫不火,JAVA 和 Golang 的微服務生態一直很繁榮,也被廣泛用於企業級應用開發當中
本篇文章將介紹一款 Python 微服務框架:「 Nameko 」
2. Nameko 介紹
Nameko 是一款小巧、簡潔的、非同步通訊方式的微服務架構
它採用 RabbitMQ 訊息佇列作為訊息中介軟體,基於釋出者、訂閱者模式
其中,消費者與生產者基於 RPC 進行通訊
專案地址:https://github.com/nameko/nameko
3. 實戰一下
下面以 Flask 為例聊聊搭建 Python 微服務的步驟
3-1 安裝 RabbitMQ 及啟動
這裡推薦利用 Docker 安裝 RabbitMQ,以 Centos 為例
# 1、下載某個版本的RabbitMQ的映象
# MQ版本號:3.9.5
docker pull rabbitmq:3.9.5-management
# 2、檢視映象
docker images
# 3、啟動MQ容器
# p:指定應用埠及Web控制檯埠
# hostname:主機名
# e:環境變數
# RABBITMQ_DEFAULT_VHOST:虛擬機器名稱
# RABBITMQ_DEFAULT_USER:使用者名稱
# RABBITMQ_DEFAULT_PASS:密碼
# 3e83da0dc938:MQ映象ID
docker run -d --name rabbitmq3.9.5 -p 5672:5672 -p 15672:15672 -v `pwd`/data:/var/lib/rabbitmq --hostname myRabbit -e RABBITMQ_DEFAULT_VHOST=my_vhost -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin 3e83da0dc938
需要注意的是,啟動 MQ 容器時,利用 -p 指定了兩個埠
-
5672
應用訪問埠
-
15672
控制檯 Web 訪問埠號
然後,開放防火牆的 5672、15672 埠號
PS:如果是雲伺服器,需要另外配置安全組
最後,在瀏覽器中透過下面的連線進入到 MQ 後臺 Web 管理頁面
地址:http://ip:15672地址
3-2 安裝依賴包
使用 pip 命令在虛擬環境下安裝 nameko、flask 依賴包
# 安裝依賴包
# nameko
pip3 install nameko
# flask
pip3 install flask
3-3 建立服務生產者 Producer
自定一個類,使用 name 屬性定義服務的名稱為「 generate_service 」
然後使用裝飾器「 rpc 」註冊服務中具體的方法
# producer_service.py
from nameko.rpc import rpc
class GenerateService(object):
# 定義微服務名稱
name = "generate_service"
@rpc
def hello_world(self, msg):
print('hello,i am been called by customer(消費者),返回訊息:{}'.format(msg))
# 返回結果
return "Hello World!I Am a msg from producer!" # 返回結果 return "Hello World!I Am a msg from producer!"
3-4 釋出註冊服務
使用 nameko 命令在終端將目標檔案中的服務註冊到 MQ 中
# 註冊服務
# producer_service:目標檔案
# admin:admin:MQ使用者名稱及密碼
# ip地址:5672:MQ伺服器ip地址及應用埠號
# my_vhost:虛擬機器名
nameko run producer_service --broker amqp://admin:admin@ip地址:5672/my_vhost
其中,my_vhost 對應 MQ 容器啟動時配置的虛擬機器名
3-5 Flask 定義 API 及消費者呼叫服務
為了演示方便,這裡使用 Flask 編寫一個簡單的 API
首先,定義 MQ 連線資訊
然後,編寫一個 API 介面,請求方式為 GET
最後,使用 nameko 中的「 ClusterRpcProxy 」拿到消費者物件去呼叫服務中的具體方法
from flask import Flask
from nameko.standalone.rpc import ClusterRpcProxy
app = Flask(__name__)
# MQ配置
config_mq = {'AMQP_URI': "amqp://admin:admin@ip地址:5672/my_vhost"}
@app.route('/hello_world', methods=['GET'])
def call_service():
with ClusterRpcProxy(config_mq) as rpc:
# 消費者呼叫微服務(生產者),獲取服務(生產者)的返回值
result = rpc.generate_service.hello_world(msg="xag msg")
# 返回結果
return result, 200
app.run(debug=True)
3-6 測試一下
使用 Postman 呼叫上面的 API 介面,就能完成消費者呼叫生成者服務中的方法,拿到返回結果的完整流程
# 呼叫API介面
http://127.0.0.1:5000/hello_world
Method:GET
4. 最後
上面以 Flask 為例講解了微服務的搭建的完整流程
如果是其他 Web 框架( 比如 Django、FastAPI 等 )整合微服務流程是類似的,只需要修改生成 API 部分的邏輯即可,更多進階內容大家可以參考官方文件
官方文件:https://nameko.readthedocs.io/en/stable/
如果你覺得文章還不錯,請大家 點贊、分享、留言 下,因為這將是我持續輸出更多優質文章的最強動力!
相關文章
- 『Microservices & Nameko』Python 微服務實踐ROSPython微服務
- 還在用Feign?推薦一款微服務間呼叫神器,跟SpringCloud絕配!微服務SpringGCCloud
- 推薦一款Win11主題WPF UI框架UI框架
- 【推薦】最高效的Python爬蟲框架!Python爬蟲框架
- 推薦一款Python資料視覺化神器Python視覺化
- 推薦一款Laravel+Layui敏捷後臺開發框架LaravelUI敏捷框架
- 推薦一款基於業務行為驅動開發(BDD)測試框架:Cucumber!框架
- 推薦五個好用的Python測試框架!Python框架
- 2022年5種主流的Python框架推薦!Python框架
- 推薦30個用於微服務的頂級工具微服務
- 推薦 5 個 yyds 的開源 Python Web 框架PythonWeb框架
- 推薦一款VNC軟體,推薦一款超級好用的VNC軟體!VNC
- 推薦一款專為新手用的Python開發工具Python
- Python相關爬蟲的框架有哪些?五大框架推薦!Python爬蟲框架
- Python爬蟲的框架有哪些?推薦這五個!Python爬蟲框架
- 什麼Jupyter框架?為什麼學Python推薦Jupyter?框架Python
- 強!推薦一款Python開源自動化指令碼工具:AutoKey!Python指令碼
- 推薦一款小眾且好用的 Python 爬蟲庫 - RoboBrowserPython爬蟲
- 推薦一款資料mock框架,無需任何依賴,賊牛逼Mock框架
- 微服務框架-dubbo整合nacos框架微服務框架
- Python爬蟲一般會用到什麼框架?常見框架推薦!Python爬蟲框架
- 推薦一款 MySQL 命令列神器MySql命令列
- 淺析微服務框架微服務框架
- 推薦一款自動生成財務報表分析的軟體
- 推薦一款 Python 神器,5 行 Python 程式碼 實現一鍵批量扣圖Python
- python 推薦系統Python
- 推薦一款好用的CRM軟體?
- 推薦一款線上共享雲桌面
- dotnet core微服務框架Jimu ~ 會員註冊微服務微服務框架
- dotnet core微服務框架Jimu ~ 會員授權微服務微服務框架
- go-zero:微服務框架Go微服務框架
- Python 微服務二Python微服務
- 推薦一款Python介面自動化測試資料提取分析神器!Python
- 5大電腦軟體推薦!每一款都是精心挑選,良心推薦!
- python 書籍推薦 三Python
- 推薦一款 Flutter Push 推送功能外掛Flutter
- 推薦一款JQ星級評分外掛
- 推薦一款超好用的編輯器