python 任务队列管理_转载——Python实现Reids任务队列(简单案例)

首先得了解redis数据库的lpush和brpop命令:

1.Redis Lpush 命令将一个或多个值插入到列表头部。 如果 key 不存在,一个空列表会被创建并执行 LPUSH 操作。 当 key 存在但不是列表类型时,返回一个错误。

注意:在Redis 2.4版本以前的 LPUSH 命令,都只接受单个 value 值

2.Redis Brpop 命令移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

接下来我们写三个脚本,

第一个是负责发布任务的脚本,即不断往redis存入消息

import redis

import json

import time

# 链接数据库

redis_queue = redis.Redis(host='localhost', port=6379)

# 定义初始值a

a = 0

# 往redis存入{"number":a},其中a的值是递增的,当a=100时,停止存入

while a != 100:

dic = {"number": a}

a += 1

print("开始存入{'number':%s}"%a)

redis_queue.lpush('somekey', json.dumps(dic))

# 休息0.5秒

time.sleep(0.5)

第二个和第三个脚本内容相同,功能是负责从redis获取消息。

import redis

import time

# 链接数据库

redis_queue = redis.Redis(host='localhost', port=6379 )

# 每隔一秒从列表中获取消息

# 如果timeout=0,消息队列为空时,程序会一直阻塞

while True:

task=redis_queue.brpop('somekey',timeout=3)

if not task:

print("3秒内没有获取到消息,我要中断循环了")

break

# 打印消息

print(task[1])

time.sleep(1)

先运行第一个发布消息的脚本.

—————————————————————————拓展资料—————————————————————————————————

以上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值