python redis搭建队列服务

# -*- coding:utf-8 -*-

import redis

# from redis_queue
r = redis.Redis(host='127.0.0.1', port=6379, password='liang')


class RedisQueue(object):
def __init__(self, name, namespace='queue'):
# redis的默认参数为:host='localhost', port=6379, db=0, 其中db为定义redis database的数量
self.__db = redis.Redis(host='127.0.0.1', port=6379, password='liang',db=0) # 链接数据库
self.key = '%s:%s' % (namespace, name)

def qsize(self):
return self.__db.llen(self.key) # 返回队列里面list内元素的数量

def put(self, item):
self.__db.rpush(self.key, item) # 添加新元素到队列最右方

def get_wait(self, timeout=None):
# 返回队列第一个元素,如果为空则等待至有元素被加入队列(超时时间阈值为timeout,如果为None则一直等待)
item = self.__db.blpop(self.key, timeout=timeout)
# if item:
# item = item[1] # 返回值为一个tuple
return item

def get_nowait(self):
# 直接返回队列第一个元素,如果队列为空返回的是None
item = self.__db.lpop(self.key)
return item

入队列
# -*- coding:utf-8 -*-
from redis_queue import RedisQueue
import time

q = RedisQueue('rq') # 新建队列名为rq
for i in range(5):
q.put(i)
print "input.py: data {} enqueue {}".format(i, time.strftime("%c"))
# time.sleep(1)


print q.qsize()



出队列
from redis_queue import RedisQueue
import time

q = RedisQueue('rq')
while 1:
result = q.get_wait()
# if not result:
# break
# print "output.py: data {} out of queue {}".format(result, time.strftime("%c"))
# time.sleep(2)
print result









猜你喜欢

转载自www.cnblogs.com/siconglove/p/10573290.html