关于ZeroMQ 三种模式python3实现方式


Posted in Python onDecember 23, 2019

ZeroMQ是一个消息队列网络库,实现网络常用技术封装。在C/S中实现了三种模式,这段时间用python简单实现了一下,感觉python虽然灵活。但是数据处理不如C++自由灵活。

Request-Reply模式:

客户端在请求后,服务端必须回响应

关于ZeroMQ 三种模式python3实现方式

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可以进行数据过滤。

关于ZeroMQ 三种模式python3实现方式

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存在一个数据缓存和处理负载。

当连接被断开,数据不会丢失,重连后数据继续发送到对端

关于ZeroMQ 三种模式python3实现方式

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实现方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现扫描局域网活动ip(扫描在线电脑)
Apr 28 Python
python任务调度实例分析
May 19 Python
python下paramiko模块实现ssh连接登录Linux服务器
Jun 03 Python
python生成IP段的方法
Jul 07 Python
对python中return和print的一些理解
Aug 18 Python
pandas groupby 分组取每组的前几行记录方法
Apr 20 Python
解决python3 urllib 链接中有中文的问题
Jul 16 Python
python中join()方法介绍
Oct 11 Python
Python中的取模运算方法
Nov 10 Python
基于Python实现扑克牌面试题
Dec 11 Python
Python爬取阿拉丁统计信息过程图解
May 12 Python
python 如何用terminal输入参数
May 25 Python
Python 内置函数globals()和locals()对比详解
Dec 23 #Python
Python 项目转化为so文件实例
Dec 23 #Python
python 解决cv2绘制中文乱码问题
Dec 23 #Python
python 实现查询Neo4j多节点的多层关系
Dec 23 #Python
python 多进程队列数据处理详解
Dec 23 #Python
python3实现从kafka获取数据,并解析为json格式,写入到mysql中
Dec 23 #Python
python读取ini配置文件过程示范
Dec 23 #Python
You might like
PHP base64编码后解码乱码的解决办法
2014/06/19 PHP
详解js异步文件加载器
2016/01/24 PHP
php实现生成验证码实例分享
2016/04/10 PHP
Laravel jwt 多表(多用户端)验证隔离的实现
2019/12/18 PHP
网站页面自动跳转实现方法PHP、JSP(上)
2010/08/01 Javascript
jquery.post用法之type设置问题
2014/02/24 Javascript
删除Javascript Object中间的key
2014/11/18 Javascript
jquery使用ul模拟select实现表单美化的方法
2015/08/18 Javascript
一分钟理解js闭包
2016/05/04 Javascript
基于BootStrap Metronic开发框架经验小结【一】框架总览及菜单模块的处理
2016/05/12 Javascript
解决ajax不能访问本地文件问题(利用js跨域原理)
2017/01/24 Javascript
JavaScript 值类型和引用类型的初次研究(推荐)
2017/07/19 Javascript
fullpage.js最后一屏滚动方式
2018/02/06 Javascript
vue非父子组件通信问题及解决方法
2018/06/11 Javascript
在VUE中实现文件下载并判断状态的方法
2019/11/08 Javascript
nodejs中使用archive压缩文件的实现代码
2019/11/26 NodeJs
JavaScript Window窗口对象属性和使用方法
2020/01/19 Javascript
autojs 蚂蚁森林能量自动拾取即给指定好友浇水的实现方法
2020/05/03 Javascript
你不知道的SpringBoot与Vue部署解决方案
2020/11/09 Javascript
vue 使用class创建和清除水印的示例代码
2020/12/25 Vue.js
Python中的super用法详解
2015/05/28 Python
Python使用logging结合decorator模式实现优化日志输出的方法
2016/04/16 Python
python pandas.DataFrame选取、修改数据最好用.loc,.iloc,.ix实现
2018/06/11 Python
pyQt4实现俄罗斯方块游戏
2018/06/26 Python
Python List cmp()知识点总结
2019/02/18 Python
Python通过2种方法输出带颜色字体
2020/03/02 Python
Pycharm激活方法及详细教程(详细且实用)
2020/05/12 Python
Pandas的数据过滤实现
2021/01/15 Python
简单掌握CSS3将文字描边及填充文字颜色的方法
2016/03/07 HTML / CSS
函授毕业自我鉴定
2014/02/04 职场文书
超越自我演讲稿
2014/05/21 职场文书
生产车间标语
2014/06/11 职场文书
毕业生工作求职信
2014/06/30 职场文书
婚宴父母致辞
2015/07/27 职场文书
三好学生竞选稿
2015/11/21 职场文书
Python中time标准库的使用教程
2022/04/13 Python