关于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 测试实现方法
Dec 24 Python
用Python写冒泡排序代码
Apr 12 Python
Python的Flask框架及Nginx实现静态文件访问限制功能
Jun 27 Python
梯度下降法介绍及利用Python实现的方法示例
Jul 12 Python
python中子类调用父类函数的方法示例
Aug 18 Python
解决python matplotlib imshow无法显示的问题
May 24 Python
Python+OpenCV实现图像融合的原理及代码
Dec 03 Python
python中的数据结构比较
May 13 Python
基于python+selenium的二次封装的实现
Jan 06 Python
深入理解Python 多线程
Jun 16 Python
PyCharm 2020.2.2 x64 下载并安装的详细教程
Oct 15 Python
Appium中scroll和drag_and_drop根据元素位置滑动
Feb 15 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
JAVA/JSP学习系列之四
2006/10/09 PHP
PHP反射机制用法实例
2014/08/28 PHP
php获取从html表单传递数组的方法
2015/03/20 PHP
thinkPHP5框架实现基于ajax的分页功能示例
2018/06/12 PHP
js保留两位小数使用toFixed实现
2013/07/29 Javascript
JavaScript调试技巧之console.log()详解
2014/03/19 Javascript
网页右下角弹出窗体实现代码
2014/06/05 Javascript
angularjs的一些优化小技巧
2014/12/06 Javascript
基于JS实现PHP的sprintf函数实例
2015/11/14 Javascript
Bootstrap弹出带合法性检查的登录框实例代码【推荐】
2016/06/23 Javascript
Bootstrap作品展示站点实战项目2
2016/10/14 Javascript
JavaScript将base64图片转换成formData并通过AJAX提交的实现方法
2016/10/24 Javascript
Ajax实现不刷新取最新商品
2017/03/01 Javascript
JS实现元素上下左右移动效果
2017/10/18 Javascript
vue环境搭建简单教程
2017/11/07 Javascript
利用ES6实现单例模式及其应用详解
2017/12/09 Javascript
Javascript获取某个月的天数
2018/05/30 Javascript
Vue+element-ui 实现表格的分页功能示例
2018/08/18 Javascript
Vue+webpack项目配置便于维护的目录结构教程详解
2018/10/14 Javascript
微信小程序分享小程序码的生成(带参数)以及参数的获取
2020/03/25 Javascript
addEventListener()和removeEventListener()追加事件和删除追加事件
2020/12/04 Javascript
[49:58]完美世界DOTA2联赛PWL S3 Magma vs DLG 第一场 12.18
2020/12/19 DOTA
Python爬虫实现网页信息抓取功能示例【URL与正则模块】
2017/05/18 Python
python中return的返回和执行实例
2019/12/24 Python
Python爬取365好书中小说代码实例
2020/02/28 Python
Python 窗体(tkinter)下拉列表框(Combobox)实例
2020/03/04 Python
如何配置关联Python 解释器 Anaconda的教程(图解)
2020/04/30 Python
基于Python和C++实现删除链表的节点
2020/07/06 Python
使用Python制作一个数据预处理小工具(多种操作一键完成)
2021/02/07 Python
利用CSS3的transition属性实现滑动效果
2015/08/05 HTML / CSS
html5使用canvas实现图片下载功能的示例代码
2017/08/26 HTML / CSS
墨西哥购物网站:Elektra
2020/01/21 全球购物
如何做好总经理助理
2013/11/12 职场文书
办公自动化专业大学生职业规划书
2014/03/06 职场文书
nginx配置限速限流基于内置模块
2022/05/02 Servers
js前端图片加载异常兜底方案
2022/06/21 Javascript