关于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中使用enumerate函数遍历元素实例
Jun 16 Python
使用Python对IP进行转换的一些操作技巧小结
Nov 09 Python
Python 爬虫爬取指定博客的所有文章
Feb 17 Python
利用Python中SocketServer 实现客户端与服务器间非阻塞通信
Dec 15 Python
使用Python脚本和ADB命令实现卸载App
Feb 10 Python
浅析Python中return和finally共同挖的坑
Aug 18 Python
python合并同类型excel表格的方法
Apr 01 Python
使用PyCharm创建Django项目及基本配置详解
Oct 24 Python
Django框架自定义session处理操作示例
May 27 Python
selenium跳过webdriver检测并模拟登录淘宝
Jun 12 Python
关于tensorflow的几种参数初始化方法小结
Jan 04 Python
python3.9.1环境安装的方法(图文)
Feb 02 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
PHP5新特性: 更加面向对象化的PHP
2006/11/18 PHP
php相当简单的分页类
2008/10/02 PHP
利用curl抓取远程页面内容的示例代码
2013/07/23 PHP
ThinkPHP表单自动提交验证实例教程
2014/07/18 PHP
CodeIgniter针对lighttpd服务器URL重写的方法
2015/06/10 PHP
基于laravel Request的所有方法详解
2019/09/29 PHP
关于javaScript注册click事件传递参数的不成功问题
2014/07/18 Javascript
整理AngularJS中的一些常用指令
2015/06/16 Javascript
jQuery实现带延迟的二级tab切换下拉列表效果
2015/09/01 Javascript
JavaScript学习笔记整理_关于表达式和语句
2016/09/19 Javascript
浅谈通过JS拦截 pushState和replaceState事件
2017/07/21 Javascript
JS动态修改网页body的背景色实例代码
2017/10/07 Javascript
详解vue-cli之webpack3构建全面提速优化
2017/12/25 Javascript
从Vuex中取出数组赋值给新的数组,新数组push时报错的解决方法
2018/09/18 Javascript
Vue双向绑定实现原理与方法详解
2020/05/07 Javascript
JavaScript中常用的3种弹出提示框(alert、confirm、prompt)
2020/11/10 Javascript
[00:26]TI7不朽珍藏III——冥界亚龙不朽展示
2017/07/15 DOTA
[01:33:14]LGD vs VP Supermajor 败者组决赛 BO3 第二场 6.10
2018/07/04 DOTA
简单介绍Python的Django框架的dj-scaffold项目
2015/05/30 Python
将Python代码嵌入C++程序进行编写的实例
2015/07/31 Python
基于Python实现通过微信搜索功能查看谁把你删除了
2016/01/27 Python
Python实现八大排序算法
2016/08/13 Python
pygame游戏之旅 python和pygame安装教程
2018/11/20 Python
学python安装的软件总结
2019/10/12 Python
Python 爬虫实现增加播客访问量的方法实现
2019/10/31 Python
python爬虫开发之使用Python爬虫库requests多线程抓取猫眼电影TOP100实例
2020/03/10 Python
pandas DataFrame运算的实现
2020/06/14 Python
UI自动化定位常用实现方法代码示例
2020/10/27 Python
什么是SQL Server的确定性函数和不确定性函数
2016/08/04 面试题
毕业自荐书
2013/12/09 职场文书
客户接待方案
2014/02/26 职场文书
月度优秀员工获奖感言
2014/08/16 职场文书
欢送会主持词
2015/07/01 职场文书
任命书格式范文
2015/09/22 职场文书
Vue + iView实现Excel上传功能的完整代码
2021/06/22 Vue.js
Python数据可视化之Seaborn的安装及使用
2022/04/19 Python