关于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实现高效求解素数代码实例
Jun 30 Python
python将每个单词按空格分开并保存到文件中
Mar 19 Python
Python学习小技巧总结
Jun 10 Python
详解Python做一个名片管理系统
Mar 14 Python
用python打印1~20的整数实例讲解
Jul 01 Python
Python使用pyautocad+openpyxl处理cad文件示例
Jul 11 Python
使用django实现一个代码发布系统
Jul 18 Python
Flask框架学习笔记之消息提示与异常处理操作详解
Aug 15 Python
python运用sklearn实现KNN分类算法
Oct 16 Python
Python如何实现动态数组
Nov 02 Python
去除python中的字符串空格的简单方法
Dec 22 Python
Python调用高德API实现批量地址转经纬度并写入表格的功能
Jan 12 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操作文件的一些基本函数使用示例
2014/11/18 PHP
PHP简单实现文本计数器的方法
2016/04/28 PHP
thinkPHP的表达式查询用法详解
2016/09/14 PHP
用php和jQuery来实现“顶”和“踩”的投票功能
2016/10/13 PHP
PHP+MySQL实现输入页码跳转到指定页面功能示例
2018/06/01 PHP
使用jquery给input和textarea设定ie中的focus
2008/05/29 Javascript
让iframe子窗体取父窗体地址栏参数(querystring)
2009/10/13 Javascript
JQuery中使用ajax传输超大数据的解决方法
2014/07/14 Javascript
jQuery+Ajax实现限制查询间隔的方法
2016/06/07 Javascript
jquery动态创建div与input的实例代码
2016/10/12 Javascript
bootstrap组件之按钮式下拉菜单小结
2017/01/19 Javascript
vue2.0安装style/css loader的方法
2018/03/14 Javascript
JQuery扩展对象方法操作示例
2018/08/21 jQuery
vue interceptor 使用教程实例详解
2018/09/13 Javascript
vue中$refs, $emit, $on, $once, $off的使用详解
2019/05/26 Javascript
vue前后分离调起微信支付
2019/07/29 Javascript
微信小程序实现页面跳转传递参数(实体,对象)
2019/08/12 Javascript
[03:36]2014DOTA2 TI小组赛综述 八强诞生进军钥匙球馆
2014/07/15 DOTA
python正则表达式判断字符串是否是全部小写示例
2013/12/25 Python
python动态加载变量示例分享
2014/02/17 Python
python使用nntp读取新闻组内容的方法
2015/05/08 Python
Flask 让jsonify返回的json串支持中文显示的方法
2018/03/26 Python
解决pycharm安装后代码区不能编辑的问题
2018/10/28 Python
python七夕浪漫表白源码
2019/04/05 Python
python 自动轨迹绘制的实例代码
2019/07/05 Python
python通用读取vcf文件的类(复制粘贴即可用)
2020/02/29 Python
对python中arange()和linspace()的区别说明
2020/05/03 Python
Python的控制结构之For、While、If循环问题
2020/06/30 Python
应届毕业生自荐信例文
2014/02/26 职场文书
婚前保证书
2014/04/29 职场文书
白血病募捐倡议书
2014/05/14 职场文书
派出所所长先进事迹
2014/05/19 职场文书
群众路线学习笔记范文
2014/11/06 职场文书
上诉状格式
2015/05/23 职场文书
Python图像处理之图像拼接
2021/04/28 Python
教你使用Jenkins集成Harbor自动发布镜像
2022/04/03 Servers