python pyzmq,yqm是啥
【相关学习推荐:python教程】
00-1010ZMQ(以下简称ZMQ)是一个简单易用的传输层,一个像框架一样的socket库,让Socket编程更简单,简洁,性能更高。
是一个消息处理队列库,可以在多线程、内核、主机盒之间灵活伸缩。ZMQ的明确目标是“成为标准网络协议栈的一部分,然后进入Linux内核”。
ZMQ使得编写高性能网络应用程序变得极其简单和有趣。
ZeroMQ不是socket的包,所以不能用来实现现有的网络协议。
它有自己的模式,不同于更低级的点对点通信模式。
它的协议级别比tcp高。(当然ZeroMQ不一定基于TCP协议,也可以用于进程间和进程内通信)
Zeromq与rabbitmq消息队列不同,它实际上只有一个消息队列组件和一个库。
ZMQ官网:zeromq . org/languages/python/githubgithub.com/zeromq/pyzmqdocszeromq . github . io/pyzmq/guidezguide . zeromq . org/py 3360 all
Pyzmq介绍
pip安装pyzmq
Download
1. 请求应答模式(Request-Reply)(rep 和 req)
信息是双向的,有两个方向。对于请求所请求的消息,代表必须回复请求。
2. 订阅发布模式 (pub 和 sub)
单向消息,有去无回。根据发布者可以发布主题的消息,订阅者可以订阅喜欢的主题,订阅者只会收到自己订阅过的主题。发布者发布可以被多个订阅者接收的消息。
3. push pull模式
消息是单向的,没有回报。对于任何push消息,总是只有一个pull端接收消息。
随后的代理模式和路由模式都是三种基本模式的扩展或变体。
00-1010客户端请求后,服务器必须做出响应。
客户端发起请求,并等待服务器响应请求。从客户端来说,必须是一对发送和接收对;
相反,它必须是服务器端的收发器对。服务器和客户端都可以是1: n模型。一般认为1是服务器,n是客户端。
ZMQ可以很好的支持路由功能(实现路由功能的组件称为设备),它将1: n扩展为N: m(只需要增加很少的路由节点)。
在这个模型中,较低层的端点地址对上层是隐藏的。每个请求都暗示了一个响应地址,但是应用程序并不关心它。
服务器端:
Pyzmq的几种模式
导入zmq导入系统
上下文=zmq。上下文()
套接字=context.socket(zmq。代表)
socket . bind( TCP ://* :5555 )
而True:
尝试:
打印(等待客户端.)
message=socket.recv()
print(来自客户端:的消息,message.decode(utf-8 ))
socket.send(消息)
e:除外
打印(异常3360 ,e)
Sys.exit()客户端:
#client.py
导入zmq导入系统
上下文=zmq。上下文()
打印(连接
to server...")
socket = context.socket(zmq.REQ)
socket.connect("tcp://localhost:5555")
while True:
input1 = input("请输入内容:").strip()
if input1 == 'b':
sys.exit()
socket.send(input1.encode('utf-8'))
message = socket.recv()
print("Received reply: ", message.decode('utf-8'))
2.Publish-Subscribe模式(发布订阅模型):
广播所有client,没有队列缓存,断开连接数据将永远丢失。client可以进行数据过滤。
服务端
server.py
import zmq import time import sys
客户端1
client1.py
import zmq
客户端2
client2.py
import zmq
3.Parallel Pipeline模式(管道模型):
由三部分组成,push进行数据推送,work进行数据缓存,pull进行数据竞争获取处理。区别于Publish-Subscribe存在一个数据缓存和处理负载。
当连接被断开,数据不会丢失,重连后数据继续发送到对端。
server.py
import zmq import time
worker.py
import zmq
client.py
import zmq
以上就是关于Pyzmq介绍的详细内容,更多请关注盛行IT软件开发工作室其它相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。