首页 > 技术文章 > 【python-redis实现简单的队列pub/sub】

gokublog 2020-10-20 17:34 原文

需求:本次项目需求是自己用flask设计一个api,接受一些参数,然后使用队列动态将参数传给后台的worker,在此总结一下redis的pub# -*- coding: utf-8 -*-from flask import Flask

from flask import request, jsonify
from redis import Redis

app = Flask(__name__)


@app.route("/v1/enc-aab", methods=["POST"])
def first_post():
    """函数主体"""
    data = request.get_json()
    path = data.get('path')
    name = data.get('name')
    res = {'path': path, 'name': name}
    print(res)
    # 业务处理
    if not all([path, name]):
        return jsonify(msg='参数不完整')
    else:
        # 数据完整 开始pub
        rc = Redis(host='127.0.0.1', port=6379, db=0)
        rc.pubsub()
        rc.publish('res', res)
return jsonify(status='ok') if __name__ == '__main__': app.run()

到此为止就在接口中拿到了传递的data并pub进了queue

pub的总结如下:

# ##### 
rc = Redis(host='127.0.0.1', port=6379, db=0)
rc.pubsub()
rc.publish('res', res)
# #####          

 

sub的应用如下:

# ###### 
rc = Redis(host='127.0.0.1', port=6379, db=0)
ps = rc.pubsub()
ps.subscribe(['res'])
for item in ps.listen():
   print(item)
# ######

 

推荐阅读