Redis优先列队 --cherryq,redis--cherryq,这个Queue是多列队列
Redis优先列队 --cherryq,redis--cherryq,这个Queue是多列队列
这个Queue是多列队列队,在列队中实现了对新列队的加入,清空功能
也是一个简单使用消息列队原理和系统集成原理做的初步中间件。
#!/usr/bin/python2.7# -*- coding: utf-8 -*-"""__author__ = "Thomas"__date__ = "2013-05-19""""try: import cPickle as pickleexcept: import picklefrom cherryq import Queuefrom task import Taskimport timeimport signalimport loggingclass Worker: def __init__(self, queue_instance): self.queue = queue_instance self.running = True self.set_logging() self.handle_signal() def set_logging(self): logging.basicConfig(filename='log/worker.log', filemode='a', format='[%(levelname)-5s %(asctime)s %(msecs)6dms] %(message)s ', datefmt='%Y%m%d %H:%M:%S', level=logging.DEBUG) self.logger = logging.getLogger(__name__) def handle_signal(self): for sig in (signal.SIGABRT, signal.SIGILL, signal.SIGINT, signal.SIGSEGV, signal.SIGTERM): signal.signal(sig, self.stop_signal_do) def stop_signal_do(self, sig, frm): self.running = False def work(self, queue_name): while self.running: data = self.queue.get(queue_name) if data: print data job = pickle.loads(data[1]) job() self.logger.info("(%s):%s" %(data[0], job.name)) def works(self, *queues): while self.running: data = self.queue.dequeue(queues, timeout = 2) if data: job = pickle.loads(data[1]) job() self.logger.info("(%s):%s" %(data[0], job.name)) time.sleep(0.5)if __name__ == "__main__": print "...worker starting...... " q = Queue("demo_queues", host="localhost", db=0, port=6379) queues = ["high", "meduim", "low"] worker = Worker(q) worker.works(*queues) print "...worker exit........"#该片段来自于http://byrx.net
相关内容
- python中连续多次输出相同字符串的方法,python输出字符
- NHibernate代码生成器,,使用pyodbc连接MS
- 下载网络图像,网络图像,import osimp
- python求解水仙花数,python求解水仙花,#!/usr/bin/p
- 使用Tornado开发Github用户活跃度排名应用,tornadogithub,
- 程序猿没有女朋友怎么办,New一个呗!【property练习】,
- 搜索过多副本的大文件,搜索副本文件,文件多了乱放,
- python项目写一个计算器,python项目计算器,#coding:utf-
- 抓取三大电商今日特价,抓取三大电商,抓京东, 新蛋
- 如何把图片存入数据库,图片存入数据库,MYSQL 是支持把
评论关闭