bokeh.application.handlers.directory#

提供一个 Bokeh 应用程序处理器,通过运行指定目录中 main.pymain.ipynb 文件中的代码来构建文档。

该目录还可以选择性地包含

  • 一个 server_lifecyle.py 模块,为应用程序和会话提供生命周期回调。

  • 一个 static 子目录,包含要服务的应用程序特定的静态资源。

  • 一个 theme.yaml 文件,其中包含一个 Bokeh 主题,自动应用于所有新文档。

  • 一个 templates 子目录,包含应用程序显示的模板

完整的目录布局可能如下所示

myapp
   |
   +---main.py
   +---server_lifecycle.py
   +---static
   +---theme.yaml
   +---templates
        +---index.html
class DirectoryHandler(*, filename: str | PathLike[str], argv: list[str] = [])[source]#

加载修改文档的应用程序目录。

__init__(*, filename: str | PathLike[str], argv: list[str] = []) None[source]#
关键词

filename (str) : 包含“main.py”或“main.ipynb”的应用程序目录的路径

argv (list[str], 可选) : 字符串参数列表,作为 sys.argv 提供给 main.py

modify_document(doc: Document) None[source]#

执行配置的 main.pymain.ipynb 来修改文档。

此方法还将在应用程序目录中搜索任何主题或模板文件,如果找到,则会自动使用它们配置文档。

on_server_loaded(server_context: ServerContext) None[source]#

在服务器首次启动时,执行 on_server_unloaded` 来自 server_lifecycle.py(如果已定义)。

参数:

server_context (ServerContext)

on_server_unloaded(server_context: ServerContext) None[source]#

当服务器干净退出时(在停止服务器的 IOLoop 之前),执行来自 server_lifecycle.pyon_server_unloaded(如果已定义)。

参数:

server_context (ServerContext)

警告

实际上,此代码可能不会运行,因为服务器通常会被信号终止。

on_session_created(session_context: SessionContext) Coroutine[Any, Any, None][source]#

在创建新会话时,执行来自 server_lifecycle.pyon_session_created(如果已定义)。

参数:

session_context (SessionContext)

on_session_destroyed(session_context: SessionContext) Coroutine[Any, Any, None][source]#

在会话销毁时,执行来自 server_lifecycle.pyon_session_destroyed(如果已定义)。

参数:

session_context (SessionContext)

process_request(request: HTTPServerRequest) dict[str, Any][source]#

处理传入的 HTTP 请求,并返回一个字典,其中包含要添加到 session_context 的附加数据。

参数:

request – HTTP 请求

返回值:

一个包含 JSON 可序列化数据的字典,用于包含在会话上下文中。

url_path() str | None[source]#

配置目录路径的基名称的最后一个路径组件。

property error: str | None#

如果处理程序失败,可能会包含相关的错误消息。

property error_detail: str | None#

如果处理程序失败,可能会包含回溯或其他详细信息。

property failed: bool#

如果处理程序未能修改文档,则为 True

property safe_to_fork: bool#

Bokeh 服务器是否仍然可以安全地为新工作进程分叉。

如果已运行配置的代码(脚本、笔记本等),则为 False