我想用Python 3.x实现一个动态的基于Web的仪表板(像Shiny for R)
从我在YouTube上阅读和看过的内容来看,Bokeh似乎很有希望。
目前尚不清楚我何时何地需要Bokeh服务器和Flask / Django服务器?他们会相互补充吗?或者我可以在任何一个上工作?他们俩都会同样服务吗?
Bokeh服务器基于Tornado,它本身就是一个功能强大的Python Web框架和异步网络库。根据您的需要,可以简单地编写一个Bokeh应用程序,让它以您想要的方式显示您想要的一切。 Bokeh提供了一些通过Jinja2模板自定义应用程序外观的功能。你可以在Gapminder Demo的http://demo.bokeh.org上看到这个例子。
但是,您可能需要更复杂的需求,尤其是身份验证和访问,或者需要集成到现有站点。在这种情况下,您可能正在考虑将Bokeh应用程序嵌入到另一个页面中,该页面可能是从Flask,Django或IIS或其他任何内容提供的。有两种基本方法可以做到这一点:
server_document
生成一个<script>
标签,您可以将其模板到您的页面中,这将从Bokeh服务器将应用程序嵌入到页面中<iframe>
将来自Bokeh服务器的URL嵌入到页面中这些都可以正常工作。根据您的部署环境的复杂程度,可能有更多的“devops-y”类型的事情要做,以使用代理后面的Bokeh服务器或负载均衡器等.Running a Bokeh Server的User's Guide部分有更多的信息任何需要深入了解这些细节的人。
如果您将Bokeh服务器中的应用程序嵌入到另一个网页中,则Bokeh服务器需要启动并运行才能为该应用程序提供服务!如何实现这一点是一个单独的问题,有几种方法可以做到:
supervisord
之类的东西进行管理。您可以在https://github.com/bokeh/demo.bokeh.org上看到这样的完整示例部署IOLoop
,在你的Flask / Django /任何应用中“嵌入”Bokeh服务器。你可以在examples/howto/server_embed
中看到这种技术的一个例子。此外,这应该被认为是仙女高级用法。