您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關使用python3如何實現ZeroMQ的三種模式,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
Python是一種跨平臺的、具有解釋性、編譯性、互動性和面向對象的腳本語言,其最初的設計是用于編寫自動化腳本,隨著版本的不斷更新和新功能的添加,常用于用于開發獨立的項目和大型項目。
ZeroMQ是一個消息隊列網絡庫,實現網絡常用技術封裝。在C/S中實現了三種模式,這段時間用python簡單實現了一下,感覺python雖然靈活。但是數據處理不如C++自由靈活。
Request-Reply模式:
客戶端在請求后,服務端必須回響應
server:
# -*-coding:utf-8 -*- import zmq context = zmq.Context() socket = context.socket(zmq.REP) socket.bind("tcp://*:5555") while True: message = socket.recv() print (message) socket.send("server response!".encode('utf-8'))
clinet:
# -*-coding:utf-8 -*- import zmq import sys context = zmq.Context() socket = context.socket(zmq.REQ) socket.connect("tcp://localhost:5555") while(True): data = input("input your data:") if data == 'q': sys.exit() print(data) socket.send(data.encode('utf-8')) response = socket.recv(); print (response)
Publish-Subscribe模式:
廣播所有client,沒有隊列緩存,斷開連接數據將永遠丟失。client可以進行數據過濾。
server:
# -*-coding:utf-8 -*- import zmq context = zmq.Context() socket = context.socket(zmq.PUB) socket.bind("tcp://127.0.0.1:5000") while True: data = input('input your data:') socket.send(data.encode('utf-8'))
clinet:
# -*-coding:utf-8 -*- import time import zmq context = zmq.Context() socket = context.socket(zmq.SUB) socket.connect("tcp://127.0.0.1:5000") socket.setsockopt(zmq.SUBSCRIBE, ''.encode('utf-8')) while True: print(socket.recv())
Parallel Pipeline模式:
由三部分組成,push進行數據推送,work進行數據緩存,pull進行數據競爭獲取處理。區別于Publish-Subscribe存在一個數據緩存和處理負載。
當連接被斷開,數據不會丟失,重連后數據繼續發送到對端
server:
# -*-coding:utf-8 -*- import zmq context = zmq.Context() recive = context.socket(zmq.PULL) recive.connect('tcp://127.0.0.1:5558') while True: data = recive.recv() print(data)
work:
# -*-coding:utf-8 -*- import zmq context = zmq.Context() recive = context.socket(zmq.PULL) recive.connect('tcp://127.0.0.1:5557') sender = context.socket(zmq.PUSH) sender.connect('tcp://127.0.0.1:5558') while True: data = recive.recv() print(data) sender.send(data)
clinet:
# -*-coding:utf-8 -*- import zmq import time context = zmq.Context() socket = context.socket(zmq.PUSH) socket.bind('tcp://*:5557') while True: data = input('input your data:') print(data) socket.send(data.encode('utf-8'))
關于“使用python3如何實現ZeroMQ的三種模式”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。