如何在运行多Bokeh应用的Bokeh Server中托管HTML页面?
用Bokeh Server托管HTML页面的方法
当然可以!Bokeh Server本身就支持静态文件托管,完全能实现类似Apache那样的静态页面服务需求,下面给你讲几种实用的实现方式:
方法1:绑定单个Bokeh应用的静态HTML
如果你的HTML页面是和某个Bokeh应用关联的,可以直接在对应应用的目录下创建一个static文件夹,把HTML文件放进去:
- 比如你的
bokeh_app1目录结构:bokeh_app1/ ├── main.py └── static/ └── my_page.html - 启动服务后,就可以通过这个路径访问HTML:
http://localhost:5006/bokeh_app1/static/my_page.html
方法2:全局静态文件目录(独立于应用)
如果想托管不绑定任何单个应用的全局HTML页面,可以在启动Bokeh Server时用--static-path参数指定一个全局静态目录:
- 比如你有一个单独的
static_files文件夹存放所有HTML和静态资源,启动命令改为:bokeh serve --static-path /path/to/your/static_files bokeh_app1 bokeh_app2 bokeh_app3 - 访问路径就是:
http://localhost:5006/static/my_global_page.html - 注意:这个目录里的所有资源(CSS、JS、图片等)都可以通过
/static/前缀访问
方法3:把HTML设为服务器默认首页
如果你希望用户访问服务器根路径(比如http://localhost:5006)时直接打开你的HTML页面,可以做一个极简的Bokeh应用来嵌入HTML:
- 创建一个名为
root_app的目录,里面的main.py写如下代码:from bokeh.plotting import curdoc from bokeh.models import Div # 读取你的HTML文件内容 with open('/path/to/your/index.html', 'r', encoding='utf-8') as f: html_content = f.read() # 用Div组件嵌入HTML,宽度高度可以根据需求调整 html_div = Div(text=html_content, width=1200, height=800) curdoc().add_root(html_div) - 启动服务时加上
--redirect-root参数,把根路径重定向到这个应用:bokeh serve --redirect-root /root_app root_app bokeh_app1 bokeh_app2 bokeh_app3
这样用户访问根路径时就会自动跳转到你的HTML页面了。
一些注意事项
- 确保Bokeh Server进程有读取静态文件目录的权限
- 如果HTML里引用了外部资源(比如图片、CSS),要把这些资源也放到对应的静态目录里,路径用相对路径(比如
./style.css)或者基于/static/的绝对路径 - 公开发布时,不要在静态目录里存放敏感文件,避免泄露
内容的提问来源于stack exchange,提问作者Cracken
相关产品推荐
相关产品推荐

