是的,可以将使用Bokeh服务器的Bokeh应用部署为为多个用户提供服务,而不使用额外的框架(如Flask)。以下是一个包含代码示例的解决方法:
from bokeh.plotting import curdoc
from bokeh.models import ColumnDataSource
from bokeh.layouts import column
from bokeh.models.widgets import Button
# 创建ColumnDataSource和Button
source = ColumnDataSource(data=dict(count=[0]))
button = Button(label="Click me", button_type="success")
# 按钮点击事件的回调函数
def button_callback():
# 获取当前的计数值
count = source.data['count'][0]
# 增加计数值
count += 1
# 更新ColumnDataSource的数据
source.data = dict(count=[count])
# 将按钮的点击事件绑定到回调函数
button.on_click(button_callback)
# 将ColumnDataSource和Button添加到布局中
layout = column(button, source)
# 将布局添加到Bokeh文档
curdoc().add_root(layout)
将上述代码保存为app.py
文件。然后通过以下命令启动Bokeh服务器:
bokeh serve --show app.py
这将启动一个Bokeh服务器并在浏览器中打开应用程序。每个访问该应用程序的用户都将看到一个包含按钮的页面。他们可以点击按钮,计数值将增加,并在所有用户之间同步更新。