我正在尝试在本地计算机上运行一个简单的散景服务器脚本:
#app.py
from bokeh.io import curdoc
from bokeh.models import ColumnDataSource
from bokeh.plotting import figure
from random import randrange
#create figure
f=figure(x_range=(0,11),y_range=(0,11))
#create columndatasource
source=ColumnDataSource(data=dict(x=[],y=[]))
#create glyphs
f.circle(x='x',y='y',size=8,fill_color='olive',line_color='yellow',source=source)
#create periodic function
def update():
new_data=dict(x=[randrange(1,10)],y=[randrange(1,10)])
source.stream(new_data,rollover=15)
print(source.data)
#add figure to curdoc and configure callback
curdoc().add_root(f)
curdoc().add_periodic_callback(update,1000)`
在命令行上我尝试了各种组合:
bokeh serve app.py
bokeh serve app.py --port 5100
bokeh serve app.py --host *
bokeh serve app.py --allow-websocket-origin=127.0.0.1:80
他们都返回一条消息,说主机被拒绝,因为它不在白名单上。我正在运行Windows。出了什么问题?
非常有趣,我实际上是在午餐前让它工作。在用食物奖励自己后,它停止了工作,从那以后我就无法得到它。我认为使用--port
和--allow-websocket
答案 0 :(得分:0)
答案是版本控制。 Tornado 4.4.2工作但4.5.3没有
答案 1 :(得分:0)
首先,如果你只是运行
bokeh serve --show app.py
然后Bokeh会自动将浏览器窗口打开到正确的URL。 deafult URL将是
http://localhost:5006/app
请注意localhost
而非127.0.0.1
其他几点说明:
--allow-websocket-origin
。它不需要只在本地查看。
弃用并删除了(令人困惑的)--host
参数(可能你有一个旧版本?),但也不需要本地查看
--address
告诉Bokeh服务器要监听哪些网络地址,而本地通常不需要这些地址。
--port
告诉Bokeh服务器要监听哪个网络端口而不是默认端口5006.例如。
bokeh serve --port 8080 --show app.py
会在此处显示应用:
http://localhost:8080/app
如果这没有帮助,则需要更多信息。具体来说,您没有提供的完全错误消息,或者您实际尝试导航到的URL的一些指示(因为这是问题的一半)。