关于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中的并发编程实例
Jul 07 Python
Python使用MD5加密字符串示例
Aug 22 Python
Python类的继承和多态代码详解
Dec 27 Python
pandas修改DataFrame列名的实现方法
Feb 22 Python
python3字符串操作总结
Jul 24 Python
解决Django后台ManyToManyField显示成Object的问题
Aug 09 Python
分享PyCharm的几个使用技巧
Nov 10 Python
python 实现二维字典的键值合并等函数
Dec 06 Python
使用tqdm显示Python代码执行进度功能
Dec 08 Python
Python使用jupyter notebook查看ipynb文件过程解析
Jun 02 Python
pytorch随机采样操作SubsetRandomSampler()
Jul 07 Python
python中的插入排序的简单用法
Jan 19 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反射使用实例和PHP反射API的中文说明
2014/07/02 PHP
php实现的Timer页面运行时间监测类
2014/09/24 PHP
简单介绍PHP非阻塞模式
2016/03/03 PHP
JS 中document.URL 和 windows.location.href 的区别
2009/11/11 Javascript
JS 遮照层实现代码
2010/03/31 Javascript
javascript删除数组元素并且数组长度减小的简单实例
2014/02/14 Javascript
基于Jquery实现表单验证
2020/07/20 Javascript
jQuery+html5+css3实现圆角无刷新表单带输入验证功能代码
2015/08/21 Javascript
jfinal与bootstrap的登录跳转实战演习
2015/09/22 Javascript
Javascript日期格式化format函数的使用方法
2016/08/30 Javascript
vue 多入口文件搭建 vue多页面搭建的实例讲解
2018/03/12 Javascript
详解vue-cli脚手架中webpack配置方法
2018/08/22 Javascript
vue中各选项及钩子函数执行顺序详解
2018/08/25 Javascript
js实现移动端轮播图
2020/12/21 Javascript
Vue.js组件高级特性实例详解
2018/12/24 Javascript
javascript中call()、apply()的区别
2019/03/21 Javascript
JS中比Switch...Case更优雅的多条件判断写法
2019/09/05 Javascript
js实现数字滚动特效
2019/12/16 Javascript
Python实现的数据结构与算法之队列详解
2015/04/22 Python
python输出当前目录下index.html文件路径的方法
2015/04/28 Python
连接Python程序与MySQL的教程
2015/04/29 Python
Python中条件判断语句的简单使用方法
2015/08/21 Python
Centos Python2 升级到Python3的简单实现
2016/06/21 Python
Python字典中的键映射多个值的方法(列表或者集合)
2018/10/17 Python
Python地图绘制实操详解
2019/03/04 Python
python安装pil库方法及代码
2019/06/25 Python
numpy中的meshgrid函数的使用
2019/07/31 Python
Python pygame绘制文字制作滚动文字过程解析
2019/12/12 Python
vue.js刷新当前页面的实例讲解
2020/12/29 Python
盛大笔试题
2016/11/05 面试题
小学生成绩单评语
2014/12/31 职场文书
教师个人年度总结
2015/02/11 职场文书
关于践行三严三实的心得体会
2016/01/05 职场文书
2016年小学中秋节活动总结
2016/04/05 职场文书
2016年妇联“6﹒26国际禁毒日”宣传活动总结
2016/04/05 职场文书
大学生创业,为什么都会选择快餐饮?
2019/08/08 职场文书