Мне было интересно, как (если вообще) flask выполняет длительный опрос, чтобы сервер мог отправлять данные через соединение с клиентом. Например, если сервер получает канал Twitter через API потоковой передачи, как он будет передан клиентскому браузеру?
Я так понимаю, что вы не можете использовать flask.flash в такой ситуации.
Спасибо
Спасибо за примеры. Я просмотрел примеры, и когда я пытаюсь реализовать это для своего кода, он по-прежнему не обеспечивает вывод в реальном времени в клиентском браузере.
Я основал его на flask snippet (), используя juggernaut и redis. Это мой код на Python:
import flask
from flask.views import MethodView
from tweetStreamsRT import StreamerRt
from juggernaut import Juggernaut
app = flask.Flask(__name__)
app.secret_key = "xxxxx"
PORT = 8080
class View(MethodView):
def get(self):
return flask.render_template('index.html')
def post(self):
results = StreamerRt().filter(track=[flask.request.form['event']])
jug = Juggernaut()
jug.publish('channel', results)
return self.get()
app.add_url_rule('/', view_func = View.as_view('index'), methods=['GET', 'POST'])
app.debug = True
if __name__ == "__main__":
print 'Listening on http://localhost:%s' % PORT
app.run()
Моя html-страница наследуется от базовой html-страницы:
{% extends "base.html" %}
{% import "forms.html" as forms %}
{% block page_header %}
<div class="page-header">
<h1>Welcome</h1>
</div>
{% endblock %}
{% block content %}
<h2>Enter the Event you would like to follow</h2>
<form action="/" method="post">
<input type="text" name="event" />
<input type="submit" value="Submit Query" />
</form>
Results:
<pre>
<script type="text/javascript" charset="utf-8">
var jug = new Juggernaut;
jug.subscribe("channel", function(data){
alert("Got data: " + data);});
</script>
</pre>
{% endblock %}
Я все еще не понимаю, почему в клиентский браузер ничего не отправляется.
Спасибо
http://flask.pocoo.org/snippets/80/
. Хотя в конечном итоге я решил использоватьTornado
framework вместе сwebsockets
для отправки данных клиенту с сервера. - person user94628   schedule 14.12.2014