python學習筆記——拾壹

來源:互聯網
上載者:User

標籤:python學習   執行   family   2-2   直接   [1]   sys.argv   argv   false   

 

協程和io多工區別 

都繼承了相同的類 libevent.so

協程也可以理解是io多工

io多工更偏向io一點

協程是更上層的一種封裝 偏向於函數的切換。

 

 

RabbitMQ 訊息佇列

1.單發送單接收

2.單發送多接收

3.廣播、訂閱模式

4.有選擇的接收訊息 Routing (按路線發送接收)

5.更細緻的訊息過濾 Topics (按topic發送接收)

6.RPC

進程queue :

在父進程與子進程進行互動,或者同屬於同一以父進程下的多個子進程互動。

 

rabbitMq:兩個獨立的程式程式 或者 在java和python的程式通訊,不同機器的 通訊, 這時需要一個中間的代理。RabbitMQ。

 

為什麼生產者已經聲明了管道,消費者還要再次聲明?

如果生產者首先啟動,管道已經建立,不會有問題。

如果消費者首先啟動,沒有聲明管道,會報錯

在windows安裝了RabbitMQ

生產者

消費者

消費者的 callback函數

ch代表管道的記憶體對象

methon 隊列的資訊

body 資料

資料處理在此

 

rabbitMQ的消費者 消費資料是輪詢方式的

如果啟動3個消費者a b c

生產者第1次生產資料,a收到

生產者第2次生產資料,b收到

生產者第3次生產資料,c收到

生產者第4次生產資料,a收到

如此迴圈往複,公平的把訊息分給每個消費者,做到了負載平衡

 

 

注意,有參數no_ack

True代表 無論消費者是否把訊息處理完,都不給生產者回應,不關心訊息。

False代表 預設是False,訊息處理完給生產者回應

RabbitMQ根據消費者的回應而刪除訊息,如果訊息處理到一半,消費者掛掉,那麼

訊息,不會刪除,而是發給其他消費者。

 

windos 下使用以下命令 查到 當前的隊列和其中的訊息數

 

資料持久化 

在建立管道時 設定durable=True 持久化隊列 在生產者和服務端都需要寫

在發送訊息時 設定如 持久化訊息 生產者

完整如:

 

rabbitMQ的負載平衡

在消費者端 設定

如此設定之後 如果當前的消費者處理的訊息超過1條,就會被轉寄到其他的消費者上。所有的消費者都設定,處理訊息快的消費者,處理完一條訊息會接著處理,處理慢的就會先把當前的訊息處理完,再接收下個訊息。這樣就做到了負責均衡。

 

設定廣播模式 訊息訂閱

訂閱發布 可以同時給綁定相同轉寄站的消費這發送訊息,但是訊息就像廣播一樣,雖然你不在聽了。但是訊息還是正常發送,錯過了的訊息不會再出現。

生產者

exchange=“log”是轉寄站

type=‘fanout’

不用再聲明queue  需要在消費者聲明queue

 

 

 

消費者:

 

sys.argv[] 擷取外部的參數

比如儲存一個test.py

import sys

a=sys.argv[1]

print(a)

運行 時加一個參數 what 結果如下 得到what

具體解釋:E:\python學習\學習網頁\Python中 sys.argv[]的用法簡明解釋

 

sys.exit()的退出比較優雅,調用後會引發SystemExit異常,可以捕獲此異常,執行異常處理中的代碼

os._exit()直接將python解譯器退出,餘下的語句不會執行

exit(0):無錯誤退出 
exit(1):有錯誤退出 

 

有選擇的接受訊息  

生產者在發送訊息需要

test_p.py error helle_word

test_p.py(生產者的檔案) error(加上類型) helle_word(內容)

消費者在發送訊息需要

test_c.py error  info

test_c.py(消費者的檔案) error  info(加上類型,可以多寫幾個)

當然 把error換成 sb都可以,只是生產者和消費者的類型如果對不上就收不到訊息

 

 

 

 

 

 

 

 

 

 

 

 

 

 

python學習筆記——拾壹

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.