成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

硬肝一次 Python 微服務(wù)是一種什么體驗(yàn)?

開(kāi)發(fā) 后端
考慮到 Python 性能及效率性,Python Web 端一直不溫不火,JAVA 和 Golang 的微服務(wù)生態(tài)一直很繁榮,也被廣泛用于企業(yè)級(jí)應(yīng)用開(kāi)發(fā)當(dāng)中。

[[425796]]

本文轉(zhuǎn)載自微信公眾號(hào)「AirPython」,作者星安果。轉(zhuǎn)載本文請(qǐng)聯(lián)系A(chǔ)irPython公眾號(hào)。

1. 前言

大家好,我是安果!

考慮到 Python 性能及效率性,Python Web 端一直不溫不火,JAVA 和 Golang 的微服務(wù)生態(tài)一直很繁榮,也被廣泛用于企業(yè)級(jí)應(yīng)用開(kāi)發(fā)當(dāng)中

本篇文章將介紹一款 Python 微服務(wù)框架:「 Nameko 」

2. Nameko 介紹

Nameko 是一款小巧、簡(jiǎn)潔的、異步通信方式的微服務(wù)架構(gòu)

它采用 RabbitMQ 消息隊(duì)列作為消息中間件,基于發(fā)布者、訂閱者模式

其中,消費(fèi)者與生產(chǎn)者基于 RPC 進(jìn)行通訊

項(xiàng)目地址:https://github.com/nameko/nameko

3. 實(shí)戰(zhàn)一下

下面以 Flask 為例聊聊搭建 Python 微服務(wù)的步驟

3-1 安裝 RabbitMQ 及啟動(dòng)

這里推薦利用 Docker 安裝 RabbitMQ,以 Centos 為例

  1. # 1、下載某個(gè)版本的RabbitMQ的鏡像 
  2. # MQ版本號(hào):3.9.5 
  3. docker pull rabbitmq:3.9.5-management 
  4.  
  5. # 2、查看鏡像 
  6. docker images 
  7.  
  8. # 3、啟動(dòng)MQ容器 
  9. # p:指定應(yīng)用端口及Web控制臺(tái)端口 
  10. # hostname:主機(jī)名 
  11. # e:環(huán)境變量 
  12. # RABBITMQ_DEFAULT_VHOST:虛擬機(jī)名稱(chēng) 
  13. # RABBITMQ_DEFAULT_USER:用戶名 
  14. # RABBITMQ_DEFAULT_PASS:密碼 
  15. # 3e83da0dc938:MQ鏡像ID 
  16. 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 

需要注意的是,啟動(dòng) MQ 容器時(shí),利用 -p 指定了兩個(gè)端口

  • 5672

應(yīng)用訪問(wèn)端口

  • 15672

控制臺(tái) Web 訪問(wèn)端口號(hào)

然后,開(kāi)放防火墻的 5672、15672 端口號(hào)

PS:如果是云服務(wù)器,需要另外配置安全組

最后,在瀏覽器中通過(guò)下面的連接進(jìn)入到 MQ 后臺(tái) Web 管理頁(yè)面

地址:http://ip地址:15672

3-2 安裝依賴包

使用 pip 命令在虛擬環(huán)境下安裝 nameko、flask 依賴包

  1. # 安裝依賴包 
  2. # nameko 
  3. pip3 install nameko 
  4.  
  5. # flask 
  6. pip3 install flask 

3-3 創(chuàng)建服務(wù)生產(chǎn)者 Producer

自定一個(gè)類(lèi),使用 name 屬性定義服務(wù)的名稱(chēng)為「 generate_service 」

然后使用裝飾器「 rpc 」注冊(cè)服務(wù)中具體的方法

  1. # producer_service.py 
  2.  
  3. from nameko.rpc import rpc 
  4.  
  5. class GenerateService(object): 
  6.     # 定義微服務(wù)名稱(chēng) 
  7.     name = "generate_service" 
  8.  
  9.     @rpc 
  10.     def hello_world(self, msg): 
  11.         print('hello,i am been called by customer(消費(fèi)者),返回消息:{}'.format(msg)) 
  12.  
  13.         # 返回結(jié)果 
  14.         return "Hello World!I Am a msg from producer!" 

3-4 發(fā)布注冊(cè)服務(wù)

使用 nameko 命令在終端將目標(biāo)文件中的服務(wù)注冊(cè)到 MQ 中

  1. # 注冊(cè)服務(wù) 
  2. # producer_service:目標(biāo)文件 
  3. # admin:admin:MQ用戶名及密碼 
  4. # ip地址:5672:MQ服務(wù)器ip地址及應(yīng)用端口號(hào) 
  5. # my_vhost:虛擬機(jī)名 
  6. nameko run producer_service --broker amqp://admin:admin@ip地址:5672/my_vhost 

其中,my_vhost 對(duì)應(yīng) MQ 容器啟動(dòng)時(shí)配置的虛擬機(jī)名

3-5 Flask 定義 API 及消費(fèi)者調(diào)用服務(wù)

為了演示方便,這里使用 Flask 編寫(xiě)一個(gè)簡(jiǎn)單的 API

首先,定義 MQ 連接信息

然后,編寫(xiě)一個(gè) API 接口,請(qǐng)求方式為 GET

最后,使用 nameko 中的「 ClusterRpcProxy 」拿到消費(fèi)者對(duì)象去調(diào)用服務(wù)中的具體方法

  1. from flask import Flask 
  2. from nameko.standalone.rpc import ClusterRpcProxy 
  3.  
  4. app = Flask(__name__) 
  5.  
  6. # MQ配置 
  7. config_mq = {'AMQP_URI'"amqp://admin:admin@ip地址:5672/my_vhost"
  8.  
  9. @app.route('/hello_world', methods=['GET']) 
  10. def call_service(): 
  11.     with ClusterRpcProxy(config_mq) as rpc: 
  12.         # 消費(fèi)者調(diào)用微服務(wù)(生產(chǎn)者),獲取服務(wù)(生產(chǎn)者)的返回值 
  13.         result = rpc.generate_service.hello_world(msg="xag msg"
  14.  
  15.         # 返回結(jié)果 
  16.         return result, 200 
  17.  
  18. app.run(debug=True

3-6 測(cè)試一下

使用 Postman 調(diào)用上面的 API 接口,就能完成消費(fèi)者調(diào)用生成者服務(wù)中的方法,拿到返回結(jié)果的完整流程

  1. # 調(diào)用API接口 
  2. http://127.0.0.1:5000/hello_world 
  3. Method:GET 

4. 最后

上面以 Flask 為例講解了微服務(wù)的搭建的完整流程

如果是其他 Web 框架( 比如 Django、FastAPI 等 )集成微服務(wù)流程是類(lèi)似的,只需要修改生成 API 部分的邏輯即可,更多進(jìn)階內(nèi)容大家可以參考官方文檔

官方文檔:https://nameko.readthedocs.io/en/stable/

 

責(zé)任編輯:武曉燕 來(lái)源: AirPython
相關(guān)推薦

2018-03-06 10:46:42

代碼Python買(mǎi)水果

2021-03-22 08:15:46

國(guó)企程序猿事業(yè)

2016-03-07 10:51:02

華為華為合作伙伴伙伴大會(huì)

2020-03-11 14:56:06

蘋(píng)果App Store審核

2012-10-12 09:32:14

開(kāi)源云開(kāi)源云技術(shù)云標(biāo)準(zhǔn)

2020-04-17 09:51:52

Python數(shù)據(jù)庫(kù)微信

2017-03-06 14:45:28

戴爾

2010-03-26 16:24:04

云計(jì)算

2024-07-12 14:54:48

2024-08-08 08:00:00

2016-01-21 17:49:52

云之家Agora語(yǔ)音會(huì)議

2018-03-09 10:09:07

程序媛體驗(yàn)女生

2015-01-21 15:35:58

開(kāi)源

2015-08-03 09:36:01

賽迪翻譯

2015-08-31 09:27:21

語(yǔ)言界面UI

2025-03-14 09:00:00

Akamai云計(jì)算安全

2015-09-09 09:41:28

十年代碼

2018-04-13 17:37:13

SAP上云

2012-01-17 11:02:39

2017-12-12 16:17:55

微服務(wù)系統(tǒng)運(yùn)維
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 日韩在线不卡 | 自拍 亚洲 欧美 老师 丝袜 | 成人精品一区 | 亚洲精品影院 | 日本成人中文字幕在线观看 | 99色视频| 国产精品视频不卡 | 99精品久久久国产一区二区三 | 日日操操 | 欧美一区二区三区的 | 91精品国产91久久综合桃花 | a级黄色片在线观看 | a级大片免费观看 | 天天夜干| 精品一区二区av | 欧美一二精品 | 国产精品高潮呻吟久久久久 | 久久r久久 | 91亚洲一区 | 91pao对白在线播放 | 久久综合成人精品亚洲另类欧美 | 第四色狠狠 | 狠狠热视频 | 亚洲成人日韩 | 中文字幕国产一区 | 亚洲一区中文字幕在线观看 | 中日韩av | 狠狠插狠狠操 | 玖玖视频免费 | 国产精品国产精品 | 久久国产日韩 | 午夜免费福利影院 | 91欧美激情一区二区三区成人 | 亚洲欧美日韩国产综合 | 午夜影院免费体验区 | 一级做a爰片性色毛片视频停止 | 久久国产成人午夜av影院武则天 | 九九精品在线 | 国产精品国产三级国产aⅴ中文 | 亚洲成人综合社区 | 日韩免费视频一区二区 |