服务器介绍#

目的#

注意

为了使本指南更容易理解,请考虑熟悉Bokeh的一些核心概念,请参阅简介部分。

Bokeh服务器使创建交互式Web应用程序变得容易,这些应用程序将前端UI事件连接到正在运行的Python代码。

Bokeh创建高级Python模型,例如绘图、范围、轴和图元,然后将这些对象转换为JSON以将其传递给其客户端库BokehJS。有关后者的更多信息,请参阅为BokehJS做贡献

这种灵活且解耦的设计提供了一些优势。例如,很容易让其他语言(如R或Scala)驱动浏览器中的Bokeh绘图和可视化。

但是,保持这些模型在Python环境和浏览器之间同步将提供更强大的功能

  • 使用Python的全部功能响应浏览器中的UI和工具事件进行计算或查询

  • 自动将服务器端更新推送到浏览器中的UI元素(如部件或绘图)

  • 使用周期性、超时和异步回调来驱动流更新

这就是Bokeh服务器发挥作用的地方

Bokeh服务器的主要目的是同步底层Python环境和浏览器中运行的BokehJS库之间的数据。


以下来自https://demo.bokeh.org的简单示例说明了此行为

操作UI控件通过Bokeh服务器将新值传达给后端。这也将触发回调,以实时更新输入的绘图。

用例场景#

在您可能想要使用Bokeh服务器时,请考虑一些不同的场景。

本地或个人使用#

您可能希望将Bokeh服务器用于探索性数据分析,可能在Jupyter Notebook中,或用于您和同事可以在本地运行的小型应用程序。

Bokeh服务器在这里非常方便,允许通过有效使用Bokeh服务器应用程序进行快速简单的部署。有关更多详细信息,请参阅构建应用程序

创建可部署的应用程序#

您可能还希望使用Bokeh服务器将交互式数据可视化和应用程序发布给更广泛的受众,例如互联网或内部公司网络。Bokeh服务器也适合此用法,但您可能需要首先参考以下内容

  • 有关如何创建Bokeh应用程序的信息,请参阅构建应用程序

  • 有关如何使用您的应用程序部署服务器的信息,请参阅部署场景

共享发布#

上述两种场景都涉及一个人在服务器上创建应用程序,无论是为了个人使用还是供更广泛的受众使用。

虽然多人可以将不同的应用程序发布到同一个服务器上,但这并不是一个好的用例,因为托管的应用程序可以执行任意Python代码。这会引发进程隔离和安全问题,并使这种共享租户难以实现。

支持这种多应用程序环境和多用户的一种方法是构建基础设施,可以为每个应用程序或至少为每个用户运行一个Bokeh服务器。Bokeh项目或第三方将来可能会为此类用法创建公共服务,但此类开发超出了本文档的范围。

另一种可能性是拥有一个应用程序,可以访问许多不同人员发布的数据和其他工件,可能具有访问控制。这种场景可以使用Bokeh服务器实现的,但通常需要将其与其他Web应用程序框架集成。