来自https://pypi.python.org/pypi/Flask-SSE
的基本示例app.py :
from flask import Flask
from flask_sse import sse
app = Flask(__name__)
app.config["REDIS_URL"] = "redis://localhost"
app.register_blueprint(sse, url_prefix='/stream')
@app.route('/send')
def send_message():
sse.publish({"message": "Hello!"}, type='greeting')
return "Message sent!"
使用:
var source = new EventSource("{{ url_for('sse.stream') }}");
source.addEventListener('greeting', function(event) {
var data = JSON.parse(event.data);
console.log(data);
}, false);
source.addEventListener('error', function(event) {
console.log("Failed to connect to event stream.");
}, false);
如果我使用gunicorn
:
gunicorn app:app --worker-class gevent --bind 0.0.0.0:8000
邮件已在我的模板中成功收到,但如果我使用uwsgi
:
uwsgi --gevent 100 --socket 0.0.0.0:8000 --protocol=http -w wsgi
使用 app.ini :
[uwsgi]
module = wsgi
master = true
processes = 5
socket = app.sock
chmod-socket = 660
vacuum = true
die-on-term = true
模板JavaScript不会收到任何消息,也不会收到任何错误。
我在Ubuntu 16.10上使用redis服务器