关于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中使用语句导入模块或包的机制研究
Mar 30 Python
Windows下python2.7.8安装图文教程
May 26 Python
Python实现对百度云的文件上传(实例讲解)
Oct 21 Python
python xlsxwriter创建excel图表的方法
Jun 11 Python
Django实现发送邮件功能
Jul 18 Python
python防止随意修改类属性的实现方法
Aug 21 Python
python 操作hive pyhs2方式
Dec 21 Python
Django中文件上传和文件访问微项目的方法
Apr 27 Python
Python实现播放和录制声音的功能
Aug 12 Python
Django框架实现在线考试系统的示例代码
Nov 30 Python
jupyter notebook更换皮肤主题的实现
Jan 07 Python
宝塔更新Python及Flask项目的部署
Apr 11 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添加文章时生成静态HTML文章的实现代码
2013/02/17 PHP
浅析关于PHP位运算的简单权限设计
2013/06/30 PHP
简单的php中文转拼音的实现代码
2014/02/11 PHP
PHP中ltrim与rtrim去除左右空格及特殊字符实例
2016/01/07 PHP
PHP实现通过URL提取根域名
2016/03/31 PHP
PHP获取远程http或ftp文件的md5值的方法
2019/04/15 PHP
纯css+js写的一个简单的tab标签页带样式
2014/01/28 Javascript
jQuery之ajax删除详解
2014/02/27 Javascript
javascript中call apply 的应用场景
2015/04/16 Javascript
window.onload与$(document).ready()的区别分析
2015/05/30 Javascript
jquery实现像栅栏一样左右滑出式二级菜单效果代码
2015/08/24 Javascript
jQuery EasyUI基础教程之EasyUI常用组件(推荐)
2016/07/15 Javascript
微信小程序本作用域下调用全局JS详解及实例
2017/02/22 Javascript
php 修改密码实现代码
2017/05/24 Javascript
vue实现图书管理demo详解
2017/10/17 Javascript
vue实现提示保存后退出的方法
2018/03/15 Javascript
Element中的Cascader(级联列表)动态加载省\市\区数据的方法
2019/03/27 Javascript
基于vue+uniapp直播项目实现uni-app仿抖音/陌陌直播室功能
2019/11/12 Javascript
[57:16]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS VG第二场
2014/05/26 DOTA
Flask框架中密码的加盐哈希加密和验证功能的用法详解
2016/06/07 Python
Python插件virtualenv搭建虚拟环境
2017/11/20 Python
python装饰器深入学习
2018/04/06 Python
Python3实现统计单词表中每个字母出现频率的方法示例
2019/01/28 Python
python__name__原理及用法详解
2019/11/02 Python
html5 input属性使用示例
2013/06/28 HTML / CSS
Wedgwood美国官网:英国骨瓷,精美礼品及家居装饰
2018/02/17 全球购物
对象的序列化(serialization)类是面向流的,应如何将对象写入到随机存取文件中
2015/06/22 面试题
运动会解说词50字
2014/01/18 职场文书
甜美蛋糕店创业计划书
2014/01/30 职场文书
研究生毕业自我鉴定范文
2014/03/27 职场文书
环保倡议书怎么写
2014/05/16 职场文书
计生工作先进事迹
2014/08/15 职场文书
2015年中秋节演讲稿
2015/03/20 职场文书
大学开学感言
2015/08/01 职场文书
班主任工作经验交流会总结
2015/11/02 职场文书
SpringCloud Function SpEL注入漏洞分析及环境搭建
2022/04/08 Java/Android