优秀的redis文档将可靠队列模式作为RPOPLPUSH函数的一个很好的候选/示例。
我理解“可靠队列”是具有像精确一次模式这样的交付模式的东西。
具体来说,您有N个进程输入队列,一些M工作人员从队列中工作。作为一个实现,这到底是什么样子?
我敢说:
使馈线进程填充工作队列。
# 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)制造另一种
# 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)现在让工人们
# 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.我的问题是:
发布于 2019-04-18 14:36:08
作为@rainhacker在评论中指出,现在建议使用Redis流,而不是在“模式:可靠队列”中描述的配方。
https://stackoverflow.com/questions/54562175
复制相似问题