關於ZeroMQ 三種模式python3實現方式
阿新 • • 發佈:2020-01-09
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'))
以上這篇關於ZeroMQ 三種模式python3實現方式就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。