关于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批量导出导入MySQL用户的方法
Nov 15 Python
python写xml文件的操作实例
Oct 05 Python
Python中扩展包的安装方法详解
Jun 14 Python
基于python元祖与字典与集合的粗浅认识
Aug 23 Python
opencv python统计及绘制直方图的方法
Jan 21 Python
opencv实现静态手势识别 opencv实现剪刀石头布游戏
Jan 22 Python
树莓派+摄像头实现对移动物体的检测
Jun 22 Python
python使用梯度下降和牛顿法寻找Rosenbrock函数最小值实例
Apr 02 Python
在pycharm中debug 实时查看数据操作(交互式)
Jun 09 Python
浅谈pytorch中的BN层的注意事项
Jun 23 Python
python进度条显示之tqmd模块
Aug 22 Python
详解python实现可视化的MD5、sha256哈希加密小工具
Sep 14 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
2020最新CPU的性能排名
2020/04/02 数码科技
10条PHP编程习惯助你找工作
2008/09/29 PHP
php防攻击代码升级版
2010/12/29 PHP
用php随机生成福彩双色球号码的2种方法
2013/02/04 PHP
PHP 过滤页面中的BOM(实现代码)
2013/06/29 PHP
php实现xml与json之间的相互转换功能实例
2016/07/07 PHP
详解PHP的抽象类和抽象方法以及接口总结
2019/03/15 PHP
thinkphp5修改view到根目录实例方法
2019/07/02 PHP
Jquery之Bind方法参数传递与接收的三种方法
2014/06/24 Javascript
Javascript中的包装类型介绍
2015/04/02 Javascript
c#程序员对TypeScript的认识过程
2015/06/19 Javascript
学习JavaScript设计模式之迭代器模式
2016/01/19 Javascript
浅析JavaScript回调函数应用
2016/05/22 Javascript
jQuery遍历json的方法(推荐)
2016/06/12 Javascript
基于JS实现bookstore静态页面的实例代码
2017/02/22 Javascript
NodeJS实现微信公众号关注后自动回复功能
2017/05/31 NodeJs
基于JavaScript实现前端数据多条件筛选功能
2020/08/19 Javascript
js 数组详细操作方法及解析合集
2018/06/01 Javascript
js对象数组和对象的使用实例详解
2019/08/27 Javascript
详解JavaScript之ES5的继承
2020/07/08 Javascript
python爬取网站数据保存使用的方法
2013/11/20 Python
在Python的Django框架中包装视图函数
2015/07/20 Python
Python操作SQLite数据库的方法详解【导入,创建,游标,增删改查等】
2017/07/11 Python
python自动裁剪图像代码分享
2017/11/25 Python
Python 实现淘宝秒杀的示例代码
2018/01/02 Python
python递归法解决棋盘分割问题
2019/07/17 Python
基于 HTML5 Canvas实现 的交互式地铁线路图
2018/03/05 HTML / CSS
戴尔美国官网:Dell
2016/08/31 全球购物
Pure Collection美国官网:来自英国羊绒专家的奢华羊绒
2017/11/19 全球购物
大唐面试试题(CPU,UNIX等等)
2012/01/11 面试题
医学检验专业个人求职信范文
2013/12/04 职场文书
公司接待方案
2014/03/08 职场文书
国家领导干部党的群众路线教育实践活动批评与自我批评材料
2014/09/23 职场文书
检察院对照“四风”认真查找问题落实整改措施
2014/09/26 职场文书
西双版纳导游词
2015/02/03 职场文书
还在手动盖楼抽奖?教你用Python实现自动评论盖楼抽奖(一)
2021/06/07 Python