将Bokeh服务器嵌入库中:独立与龙卷风和面向对象设计

时间:2017-01-15 07:53:57

标签: python tornado bokeh

我指的是Bokeh's Documentation,它描述了如何将Bokeh服务器作为库嵌入。那里有几个例子python,特别是#34; standalone"和#34; Tornado"一个,但都使用龙卷风。 我的问题是:

  1. 如果两者都使用龙卷风,那么概念上的区别是什么?为什么它被称为独立? (我不太了解龙卷风)。
  2. 我可以使用面向对象的类设计来编写GUI而不是带有全局变量的函数,比如给定的示例(参见示例中的modify_doc方法和引用外部范围中的变量的内部方法)。

1 个答案:

答案 0 :(得分:1)

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

  2. 示例函数不使用全局变量 - 它(或者说内部回调函数)只是利用Python的闭包机制,因此它可以将回调函数返回给Bokeh的FunctionHandler。我对Bokeh并不熟悉,但显然有许多不同的方法可以修改文档 - FunctionHandlerCodeHandlerScriptHandlerNotebookHandler等。 Python,类是一个可执行文件,就像任何其他函数一样,所以我很容易看到将一个传递给FunctionHandler(应该真正称为CallableHandler)。