用python中的redis实现push/pull(或queue)

r6l8ljro  于 2021-06-09  发布在  Redis
关注(0)|答案(1)|浏览(538)

我目前正在做一个项目,我有很多可以并行的任务。我使用redis来存储数据,我还想使用它来处理我的作业队列。
首先,我使用了redis doc中描述的pubsub模式。这里的问题是,它将每个消息发送给每个工作人员,我希望每个工作人员都有一条消息。目前,我已经通过为每条消息添加状态(在db中)来规避这个问题,但这显然不是最佳的。
有没有办法用合适的模式轻松地替换这个子模式?

shstlldc

shstlldc1#

不确定这是用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)

相关问题