关于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 25 Python
python登录QQ邮箱发信的实现代码
Feb 10 Python
讲解Python中的标识运算符
May 14 Python
Python中的rfind()方法使用详解
May 19 Python
Python每天必学之bytes字节
Jan 28 Python
Django查询数据库的性能优化示例代码
Sep 24 Python
Python 3.6 读取并操作文件内容的实例
Apr 23 Python
Python使用Pandas库实现MySQL数据库的读写
Jul 06 Python
Python使用Matlab命令过程解析
Jun 04 Python
Python基于yaml文件配置logging日志过程解析
Jun 23 Python
Python实现加密的RAR文件解压的方法(密码已知)
Sep 11 Python
python 爬取免费简历模板网站的示例
Sep 27 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访问MYSQL数据库封装类(附函数说明)
2010/12/04 PHP
实例讲解PHP设计模式编程中的简单工厂模式
2016/02/29 PHP
Yii2超好用的日期和时间组件(值得收藏)
2016/05/05 PHP
centos下file_put_contents()无法写入文件的原因及解决方法
2017/04/01 PHP
PHPUnit测试私有属性和方法功能示例
2018/06/12 PHP
jQuery 数据缓存模块进化史详细介绍
2012/11/19 Javascript
jquery中one()方法的用法实例
2015/01/16 Javascript
javascript中动态函数用法实例分析
2015/05/14 Javascript
使用jquery获取url及url参数的简单实例
2016/06/14 Javascript
js中的关联数组与普通数组详解
2016/07/27 Javascript
如何获取元素的最终background-color
2017/02/06 Javascript
Vue2.0 slot分发内容与props验证的方法
2017/12/12 Javascript
vue实现图片加载完成前的loading组件方法
2018/02/05 Javascript
详解如何在Vue项目中导出Excel
2019/04/19 Javascript
微信小程序云开发使用方法新手初体验
2019/05/16 Javascript
微信小程序 授权登录详解(附完整源码)
2019/08/23 Javascript
微信小程序绑定手机号获取验证码功能
2019/10/22 Javascript
微信小程序tabBar设置实例解析
2019/11/14 Javascript
Vue时间轴 vue-light-timeline的用法说明
2020/10/29 Javascript
Python打印scrapy蜘蛛抓取树结构的方法
2015/04/08 Python
全面解析Python的While循环语句的使用方法
2015/10/13 Python
Python之os操作方法(详解)
2017/06/15 Python
pandas系列之DataFrame 行列数据筛选实例
2018/04/12 Python
使用python opencv对目录下图片进行去重的方法
2019/01/12 Python
itchat-python搭建微信机器人(附示例)
2019/06/11 Python
Python2手动安装更新pip过程实例解析
2020/07/16 Python
LINUX下线程,GDI类的解释
2012/04/17 面试题
应届生财务会计求职信
2013/11/05 职场文书
采购员岗位职责
2013/11/15 职场文书
毕业自荐书
2013/12/09 职场文书
致短跑运动员广播稿
2014/01/09 职场文书
《乡愁》教学反思
2014/02/18 职场文书
防汛通知
2015/04/25 职场文书
2015年保险业务员工作总结
2015/05/27 职场文书
Sql-Server数据库单表查询 4.3实验课
2021/04/05 SQL Server
MySql按时,天,周,月进行数据统计
2022/08/14 MySQL