加入收藏 | 设为首页 | 会员中心 | 我要投稿 北几岛 (https://www.beijidao.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Python3 实现 Redis 消息队列

发布时间:2021-05-21 04:56:10 所属栏目:大数据 来源: https://blog.csdn.net/yilovex
导读:废话不多说,我们先封装一个类。 redis_message_queue.py #!/usr/bin/env python3# -*- coding: UTF-8 -*-from redis import Redis,ConnectionPoolclass RMQ(object): def __init__(self,url,name): # self.client = Redis(host=url) pool = ConnectionPool.

废话不多说,我们先封装一个类。

redis_message_queue.py

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-

from redis import Redis,ConnectionPool


class RMQ(object):

    def __init__(self,url,name):
        # self.client = Redis(host=url)
        pool = ConnectionPool.from_url(url=url,decode_responses=True)
        self.client = Redis(connection_pool=pool)
        self.queue_name = name

    def publish(self,data):
    	""" 发布 """
        self.client.publish(self.queue_name,data)
        return True

    def subscribe(self):
    	""" 订阅 """
        pub = self.client.pubsub()
        pub.subscribe(self.queue_name)
        return pub

    def run_subscribe(self):
    	""" 启动订阅 """
        pub = self.subscribe()
        while True:
            _,queue_name,message = pub.parse_response()
            if _ == 'subscribe':
                print('... 队列启动,开始接受消息 ...')
                continue
            data = {'queue': queue_name,'message': message}
            print(data)

publish.py

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-

from redis_message_queue import RMQ

rmq = RMQ(url='redis://127.0.0.1:6379/15',name='main')


if __name__ == '__main__':
    print(rmq.publish('Nice!'))

执行结果:

(demo) MacBook:zhangyi$ python publish.py 
True
(demo) MacBook: zhangyi$

subscribe.py

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-

from redis_message_queue import RMQ

rmq = RMQ(url='redis://127.0.0.1:6379/15',name='main')


if __name__ == '__main__':
    rmq.run_subscribe()

执行结果:

(demo) MacBook:zhangyi$ python subscribe.py 
... 队列启动,开始接受消息 ...
{'queue': 'main','message': 'Nice!'}

(编辑:北几岛)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读