python - 将 Bokeh 服务器嵌入为库 : standalone vs. Tornado 和面向对象的设计

标签 python tornado bokeh

我指的是Bokeh's Documentation其中描述了如何将 Bokeh 服务器作为库嵌入。那里有几个示例 python,特别是一个用于“standalone”,另一个用于“Tornado”,但两者都使用 Tornado。 我的问题是:

  1. 如果两者都使用 Tornado,概念上有什么区别?为什么叫独立版呢? (我不太了解Tornado)。
  2. 我可以使用面向对象的类设计来编码 GUI,而不是使用具有全局变量的函数,就像给定的示例中那样(请参阅示例中的 modify_doc 方法和引用变量的内部方法在外部范围内)。

最佳答案

  1. 与大多数其他 Web 服务器一样,Bokeh 的内置 Bokeh.server.server.Server需要一个事件循环来运行。在第一个“独立”示例中,它在 Tornado 的 IOLoop 之上运行(或如文档所说的“搭载”)。 ,但实际的应用逻辑是由Bokeh内部处理的Application目的。 (我相信可能可以使用其他一些事件循环,例如 Python 3 的 asyncio 中的事件循环,但我还没有测试过它。)然而,第二个示例是使用 Tornado's Web framework 。来路由请求。

  2. 示例函数没有使用全局变量 - 它(或者更确切地说,内部回调函数)只是利用 Python 的闭包机制,因此它可以将回调函数返回到 Bokeh 的 FunctionHandler 。我对 Bokeh 不太熟悉,但显然有多种不同的方法可以修改文档 - FunctionHandler , CodeHandler , ScriptHandler , NotebookHandler在Python中,类是像任何其他函数一样的可执行文件,因此我可以轻松地看到将一个传递给FunctionHandler (实际上应该称为 CallableHandler )。

关于python - 将 Bokeh 服务器嵌入为库 : standalone vs. Tornado 和面向对象的设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41658991/

相关文章:

python - 与 sqlalchemy 的通用关系,如 django contenttypes 中那样

node.js - 为什么对 Redis 使用异步客户端有意义?

python - Tornado 非阻塞请求

python - Bokeh 上是否提供图表的水平滚动条?

python - 根据 Bokeh 实时绘图中的值更改点颜色

python - Pyramid 服务器上的 CORS

python - 根据行中的数字将 Pandas 数据框列转换为列表

python - 展平和展平 numpy 数组的嵌套列表

python - 如何在其他函数中移动数据库请求(使用产量)?

Python .csv转pandas dataframe绘制bokeh的烛台图