Python 如何通过gevent的事件实现comet
关于如何使用gevent+flask实现comet有一个详细的介绍Python 如何通过gevent的事件实现comet,python,comet,gevent,Python,Comet,Gevent,关于如何使用gevent+flask实现comet有一个详细的介绍 #coding:utf-8 ''' Created on Aug 6, 2011 @author: Alan Yang ''' import time from gevent import monkey monkey.patch_all() from gevent.event import Event from gevent.pywsgi import WSGIServer from flask import Flask,
#coding:utf-8
'''
Created on Aug 6, 2011
@author: Alan Yang
'''
import time
from gevent import monkey
monkey.patch_all()
from gevent.event import Event
from gevent.pywsgi import WSGIServer
from flask import Flask,request,render_template,jsonify
app = Flask('FlaskChat')
app.event = Event()
app.cache = []
app.cache_size = 12
@app.route('/')
def index():
return render_template('index.html',messages=app.cache)
@app.route('/put',methods=['POST'])
def put_message():
message = request.form.get('message','')
app.cache.append('{0} - {1}'.format(time.strftime('%m-%d %X'),message.encode('utf-8')))
if len(app.cache) >= app.cache_size:
app.cache = app.cache[-1:-(app.cache_size):-1]
app.event.set()
app.event.clear()
return 'OK'
@app.route('/poll',methods=['POST'])
def poll_message():
app.event.wait()
return jsonify(dict(data=[app.cache[-1]]))
if __name__ == '__main__':
#app.run(debug=True)
WSGIServer(('0.0.0.0',5000),app,log=None).serve_forever()
它使用gevent的事件类。如果有人发布消息,聊天室中的任何人都会收到消息
如果我只是想让某人接收信息怎么办?我应该使用gevent.event.AsyncResult吗?如果是,怎么做?使用
从队列中读取会删除消息,如果有多个阅读器,则每条消息都将被发送到其中一个,其中一个是未指定的,虽然没有随机性或公平性,只是任意性。感谢您的建议,但似乎使用redis+gevent。睡眠是更好的解决方案