【发布时间】:2017-02-23 15:00:59
【问题描述】:
我想做的事
为我的工作组制作一种仪表板服务器,人们可以在其中选择他想要的仪表板。仪表板由通常无法由 js 处理但由 python 回调函数处理的绘图和小部件组成。
什么工作
- 散景服务器和平面服务器
- 仪表板在散景服务器上运行良好。
-
我有一个正在运行的 Flask 服务器,我能够显示用户选择的仪表板。仪表板以这种方式植根:
from bokeh.embed import autoload_server, Document from flask import Flask, render_template config = {} app = Flask(__name__) app.root("/focusmap") def serve_focusmap(): dashboard = get_focusmap_dashboard() # a bokeh plot and widget layout document = Document() document.add_root(dashboard) document.title = name session = push_session(document, session_id=None) body = autoload_server(None, session_id=session.id) config['currentSession'] = session return render_template("board.html", body=body)这可以很好地显示仪表板,但小部件不起作用,因为某处缺少
session.loop_until_closed()。
阅读散景服务器文档,我发现loop_until_closed 不是由散景服务器处理,而是来自应用程序。
什么不工作
我无法弄清楚如何在不阻止应用的情况下制作session.loop_until_closed()。
我试过了:
@app.after_request
def loopSession(response):
global config
session = config.get('currentSession',None)
if session:
session.loop_until_closed()
return response
但它当然会阻止应用程序。
有人有这方面的经验吗?我应该/我可以在子进程中运行 loop_until_closed 吗?
【问题讨论】: