python redis pubsub_在python flask中使用redis来实时发送消息

下面是一个将mesg发送到浏览器的简单应用程序.如果有来自redis频道的新mesg,则将以非阻塞方式发送其他明智的发送最后知道值.

但我做错了什么.有人可以帮我理解

from gevent import monkey, Greenlet

monkey.patch_all()

from flask import Flask,render_template,request,redirect,url_for,abort,session,Response,jsonify

app = Flask(__name__)

myglobaldict = {'somedata':''}

class RedisLiveData:

def __init__(self, channel_name):

self.channel_name = channel_name

self.redis_conn = redis.Redis(host='localhost', port=6379, db=0)

pubsub = self.redis_conn.pubsub()

gevent.spawn(self.sub, pubsub)

def sub(self,pubsub):

pubsub.subscribe(self.channel_name)

for message in pubsub.listen():

gevent.spawn(process_rcvd_mesg, message['data'])

def process_rcvd_mesg(mesg):

print "Received new message %s " % mesg

myglobaldict['somedata'] = mesg

g = RedisLiveData("test_channel")

@app.route('/latestmessage')

def latestmessage():

return Response(myglobaldict,mimetype="application/json")

if __name__ == '__main__':

app.run()

在javascript方面我只是使用一个简单的$.ajax来查看消息.

但是,即使在redis更新之后,客户端http:// localhost:5000 / latestmessage也会收到旧消息.

最佳答案 它应该是缓存问题.

您可以将时间戳或随机数添加到从ajax发送的请求http:// localhost:5000 / latestmessage?t = timestamp.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值