散景服务器 - 拒绝连接,因为主机不在白名单中

bokeh server- rejected connection because host is not in whitelist

我正在尝试 运行 在我的本地计算机上创建一个简单的散景服务器脚本:

#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

他们都return一条消息说主机被拒绝,因为它不在白名单上。我 运行宁 windows。出了什么问题?

好笑的是,我居然在午饭前就开始工作了。用食物奖励自己后,它就停止工作了,从那以后我就再也没有得到过它。我相信工作组合使用 --port--allow-websocket

答案是版本控制。 Tornado 4.4.2 有效但 4.5.3 无效

要事第一,如果你只是 运行

bokeh serve --show app.py 

然后 Bokeh 会自动将浏览器 window 打开到正确的 URL。默认的 URL 是

http://localhost:5006/app

注意是 localhost 而不是 127.0.0.1

其他一些注意事项:

  • --allow-websocket-origin 仅当您将 Bokeh 应用程序嵌入到具有自己地址的不同独立网站时才需要。不需要只在本地查看。

  • (令人困惑的)--host 参数已弃用并删除(也许您有旧版本?)但也不需要在本地查看

  • --address 告诉 Bokeh 服务器要监听哪些网络地址,本地通常不需要。

  • --port 告诉 Bokeh 服务器监听哪个网络端口而不是默认端口 5006。例如

    bokeh serve --port 8080 --show app.py 
    

    将导致可在此处访问应用程序:

    http://localhost:8080/app
    

如果这没有帮助,则需要更多信息。具体来说,您未提供的 exact 错误消息,或者您实际尝试导航到的内容 URL 的一些指示(因为这是问题的一半)。