redis 订阅 飞机票 参考
订阅者
import redis
conn = redis.Redis(host="localhost")
pub = conn.pubsub()
pub.subscribe('id') #id可以理解为频道,发送消息时需要和此id关联
while True:
print(pub.parse_response()) #pub.parse_response()接受消息
发送者
import redis
conn = redis.Redis(host="localhost")
conn.publish('id', '要发送的消息') #id 为单独的频道
应用到django中,实现uwsgi 多进程通信
订阅者比较重要 发送者根据自己的业务自行添加
# 订阅者
import redis
import threading
def sub():
conn = redis.Redis(host="localhost").pubsub()
conn.subscribe('id')
while True:
print(conn.parse_response())
"""逻辑代码"""
t = threading.Thread(target=sub) #一般把此代码放在 apps.py ready方法中 在django启动时自动启动 也可以放在 url 等其他地方,这样无论uwsgi开启多少个进程,都会有订阅者
t.daemon = True #设置为守护线程 因为django 在启动时会执行检查代码和启动程序,当主进程杀死时,该线程结束
t.start()