首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Redis“模式:可靠队列”的代码实现

Redis“模式:可靠队列”的代码实现
EN

Stack Overflow用户
提问于 2019-02-06 20:36:38
回答 1查看 1.4K关注 0票数 3

优秀的redis文档将可靠队列模式作为RPOPLPUSH函数的一个很好的候选/示例。

我理解“可靠队列”是具有像精确一次模式这样的交付模式的东西。

具体来说,您有N个进程输入队列,一些M工作人员从队列中工作。作为一个实现,这到底是什么样子?

我敢说:

使馈线进程填充工作队列。

代码语言:javascript
复制
# feeder1

import redis
import datetime
import time

r = redis.Redis(host='localhost', port=6379, db=0)
while True:
  now = datetime.datetime.now()
  value_to_work_on = "f1:{}".format(now.second) 
  r.push('workqueue', value_to_work_on)
  time.sleep(1)

制造另一种

代码语言:javascript
复制
# f2
import redis
import datetime
import time

r = redis.Redis(host='localhost', port=6379, db=0)
while True:
  now = datetime.datetime.now()
  value_to_work_on = "f2:{}".format(now.second) 
  r.push('workqueue', value_to_work_on)
  time.sleep(1)

现在让工人们

代码语言:javascript
复制
# worker1
import redis

r = redis.Redis(host='localhost', port=6379, db=0)

def do_work(x):
  print(x)
  return True

while True:
  todo = r.rpoplpush("workqueue" "donequeue")
  if do_work(todo):
    print("success")
  else:
    r.push("workqueue", todo)

# worker2 is exactly the same, just running elsewhere.

我的问题是:

  1. 这通常是文档中的意思吗?如果没有,你能提供一个解决办法作为答案吗?
  2. 这似乎还不完整,也不太可靠。例如,是否应该有错误队列和完整队列的替代列表?每个可能的错误状态都有一个?如果您的红宝石在处理过程中下降,会发生什么情况?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-18 14:36:08

作为@rainhacker在评论中指出,现在建议使用Redis流,而不是在“模式:可靠队列”中描述的配方。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54562175

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档