我正在尝试使用javascript绘图库来绘制我使用Numpy在python控制台(IPython)中计算的数据。
我在考虑设计来实现这一目标。我认为应该看起来像这样:
这意味着我正在使用Flask应用程序在IPython进程中准备好数据后立即向客户端发送服务器端事件。
1)这是正确的做法吗?
2)如何将数据从控制台发送到我的Flask应用程序?我想我需要使用gevent运行Flask应用程序,这样我就可以听到来自其他python进程的命令了吗?
3)如何使用服务器端事件将数据发送到客户端?我找到了一些服务器端事件的例子,但我看不出他们如何发送任意数据。例如:
import gevent
import gevent.monkey
from gevent.pywsgi import WSGIServer
gevent.monkey.patch_all()
from flask import Flask, request, Response, render_template
app = Flask(__name__)
def event_stream():
count = 0
while True:
gevent.sleep(2)
yield 'data: %s\n\n' % count
count += 1
@app.route('/my_event_source')
def sse_request():
return Response(
event_stream(),
mimetype='text/event-stream')
@app.route('/')
def page():
return render_template('sse.html')
if __name__ == '__main__':
http_server = WSGIServer(('127.0.0.1', 8001), app)
http_server.serve_forever()
此示例使用预定义的event_stream()函数。我正在寻找一种方法将数据从python控制台发送到客户端。
也许有另一种更好的方法?
答案 0 :(得分:0)
是普通IPython终端($ipython console
)的$ipython
(zmq控制台)吗?
为什么不直接使用IPython笔记本?
(Notebook,QT和zmq控制台可以允许第三个程序监听内核发布的事件。)
查看IPEP 21 and current implementation proposal这是双向内核< - > js沟通。
您是否看过bokeh from continuum似乎几乎可以做到的事情?
(图片中也是IPython而不是iPython,但这是一个细节)