怎么用redis+python做消息队列


一、使用redis的List类型结合lpush 和 brpop 来实现

简介

  • 首先redis的list 相当于一个队列,可以实现先进先出的规则

  • 采用brpop 是因为当队列中没有的时候会进行阻塞,直到队列中有可弹出元素或者等待超时

模拟问题:

  • 访问太多,服务器处理速度太慢,如果每隔用户等待,服务器反馈的话,时间太长,http连接超时,出现服务器错误。

模拟实现过程:

  • 有一个客户端不断的往队列里放东西(数据),采用多线程,模拟大量用户访问的情况

  • 有一个服务器不断的从队列中取出打印,并设置每次打印时间睡2秒

    Mootion Mootion

    Mootion是一个革命性的3D动画创作平台,利用AI技术来简化和加速3D动画的制作过程。

    Mootion 232 查看详情 Mootion

redis的List结构介绍

key [value, value]
key 代表List的名字, [value, ...] 是值

客户client.py

import random
import threading
import redis
import config

lock = threading.Lock()
lock.acquire()
lock.release()


pool = redis.ConnectionPool(host=config.HOST, port=config.PORT, 
                            decode_responses=True, password=config.PASSWORD)

r = redis.Redis(connection_pool=pool)

# 客户往redis 中放数据
def fun1(redisObj):
    value = random.randint(0, 100)
    # 往ccc列表中存放
    print("开始发送数据:", value)
    redisObj.lpush("print",str(value))

for i in range(100):
    threading.Thread(target=fun1, args=(r,)).start()

服务器server.py

import redis
import time
import config


pool = redis.ConnectionPool(host=config.HOST, port=config.PORT, decode_responses=True, password=config.PASSWORD)
r = redis.Redis(connection_pool=pool)
# 服务端不断的取
while True:
    value = r.brpop("print")
    time.sleep(2)
    print(value)

问题回顾

我们之前说存在阻塞太久断开连接的问题,解决下

方式: 将连接作为一个函数,进行错误捕捉,发生问题的时候重新连接。

import redis
import time
import config

def get_redis():
    pool = redis.ConnectionPool(host=config.HOST, port=config.PORT, decode_responses=True, password=config.PASSWORD)
    r = redis.Redis(connection_pool=pool)
    return r
# 服务端不断的取
r = get_redis()
    
while True:
    try:
        value = r.brpop("print")
        time.sleep(2)
        print(value)
    except Exception as e:
        print("等待超时重连")
        r = get_redis()

以上就是怎么用redis+python做消息队列的详细内容,更多请关注其它相关文章!


# redis  # 冠县抖音seo排名  # 战役分析网站建设方案  # 分析友道网站优化问题  # 培训机构推广网络营销  # 散打的营销与推广策略的图表  # 解决问题  # 弹出  # 中文网  # 相关文章  # 中有  # 太多  # 是因为  # 是一个  # 有一个  # 服务端  # Python  # 关键词代发排名灰色  # 游泳推广营销文案简短  # 上海抖音关键词排名优化公司  # 怎么选择seo插件公司  # 娄底网站建设布局图 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: 胃动力不足?试试这5个调理方法  快递优选如何查优选物流_快递优选专属物流渠道查询与配送时效  传统曲艺莲花落的表演形式是  菜鸟驿站的取件码忘了怎么办 手机快速查询指南  利用Flexbox实现图片元素的二维布局:2x2网格排列指南  《360浏览器》设置摄像头权限方法  windows10怎么更改下载路径_windows10默认存储位置修改教程  《真我》申请退款方法  汽水音乐车机版 汽水音乐车机版官方入口  Python对象引用与属性赋值:理解链表中的行为  如何查询国外邮政编码_国外邮政编码查询的多种有效途径  TikTok网页版入口快速访问 TikTok官网账号登录方法  小红书网页版首页入口 小红书网页版电脑端官方登录链接  汽水音乐在线听歌网页版 汽水音乐在线听歌网页版入口  b站怎么用微信登录_b站微信登录方法  Sublime怎么自动添加CSS前缀_Sublime安装Autoprefixer插件  《鹿路通》退余额方法  安居客移动经纪人怎么设置自动回复?-安居客移动经纪人设置自动回复的方法  德邦快递会员怎么开通  C++ optional用法详解_C++17处理可能为空的返回值  《百果园》充值余额方法  PySimpleGUI中实现键盘按键与按钮事件绑定教程  小米civi如何设置锁屏时间  oppo手机如何通过下拉通知栏截图_oppo手机通知栏快捷截图方法  sublime如何配置PHP开发环境_在sublime中运行与调试PHP代码  智慧团建活动报名入口 智慧团建活动报名入口手机端官网​  PHP utf8_encode 字符编码转换疑难解析与最佳实践  繁花漫画使用教程  苹果如何下载nanobanana  Python模块化编程:避免循环导入与共享函数的最佳实践  mysql镜像配置如何设置用户权限组_mysql镜像配置用户组与权限分级管理方法  天堂漫画网页版在线阅读 天堂漫画手机版入口  Keras中Convolution2D层及其核心辅助层详解  163邮箱网页版入口 163邮箱在线使用  如何在Podman容器中运行Composer_Docker替代品Podman的PHP与Composer容器化实践  《edge浏览器》关闭翻译功能方法  PHP安全加载非公开目录图片与动态内容类型处理指南  抖音怎么解除第三方绑定_抖音解除第三方平台绑定方法介绍  iPhone 13 Pro Max如何设置桌面小组件_iPhone 13 Pro Max小组件添加指南  win11讲述人怎么关闭 Win11屏幕朗读辅助功能禁用方法【技巧】  百度输入法在AutoCAD中无法输入中文怎么办_百度输入法CAD输入异常解决方法  AO3官方镜像链接 | 最新防走失网址永久收藏  实现可重用自定义Python Range类  申通快递物流信息查询 申通快递包裹状态追踪  OpenWeatherMap API:通过城市名称获取天气预报数据指南  PDF文件去水印平台入口 PDF水印删除网址  实时数据流中高效查找最小值与最大值  告别繁琐SEO!如何使用SyliusSitemap插件自动化生成网站地图,提升搜索引擎排名  抖音号显示企业机构号是什么意思?企业机构号申请条件是什么?  126邮箱申请入口官网_126邮箱注册免费登录2025 

 2023-06-03

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.