【问题标题】:Implement a push/pull (or queue) with redis in Python在 Python 中使用 redis 实现推/拉(或队列)
【发布时间】:2020-06-30 18:42:30
【问题描述】:
我目前正在从事一个项目,其中有很多可以并行化的任务。我用redis来存储数据,我也想用redis来处理我的作业队列。
起初,我使用了 Redis 文档中描述的PubSub pattern。这里的问题是它会将每条消息发送给我希望每个工人一条消息的每个工人。目前,我已经通过为每条消息添加状态(在数据库中)来规避这个问题,但这显然不是最佳的。
有没有办法用合适的模式轻松替换这个 pubsub 模式?
【问题讨论】:
标签:
python
redis
queue
message-queue
【解决方案1】:
不确定这是用 redis 实现队列的最有效方法,但它绝对是一种简单的方法!
import time
from redis import Redis
REDIS_CLIENT = Redis()
def push(*values):
REDIS_CLIENT.rpush('QUEUE', *values)
def pull():
while True:
msg = REDIS_CLIENT.rpop('QUEUE')
if msg is None:
time.sleep(0.1)
continue
work(msg)