我无法在flask beind apache中运行bokeh服务器,所以现在我正在尝试在本地烧瓶中提供bokeh。该图未渲染。这是烧瓶代码:
from flask import Flask, render_template
app = Flask(__name__)
from bokeh.embed import server_document
@app.route("/")
def techblog():
try:
tag = server_document(url=r'/bokeh', relative_urls=True)
return render_template('techblog.html', tag=tag)
except Exception as e:
return str(e)
if __name__ == '__main__':
app.run(debug=True)
这里是散景代码:
from numpy.random import random
from bokeh.io import curdoc
from bokeh.plotting import figure
from bokeh.layouts import column, widgetbox
from bokeh.models import Button, ColumnDataSource
from bokeh.server.server import Server
def run(doc):
fig = figure(title='random data', width=400, height=200, tools='pan,box_zoom,reset,save')
source = ColumnDataSource(data={'x': [], 'y': []})
fig.line('x', 'y', source=source)
def click(n=100):
source.data = {'x': range(n), 'y': random(n)}
button = Button(label='update', button_type='success')
button.on_click(click)
layout = column(widgetbox(button), fig)
doc.add_root(layout)
click()
# configure and run bokeh server
kws = {'port': 5000, 'prefix':'/bokeh','allow_websocket_origin': ['127.0.0.1']}
server = Server(run, **kws)
server.start()
# if __name__ == '__main__':
server.io_loop.add_callback(server.show, '/')
server.io_loop.start()
这是我的html模板:
<h1 style='color:blue'>Hello There!</h1>
</br>
{{ tag|safe }}
</br>
{{ tag }}
我正在通过python运行flask应用。然后在一个单独的命令处理器上,我通过以下方式运行bokeh应用程序:
bokeh serve --allow-websocket-origin=localhost:5000 filename.py
我只获得不带“安全”字样的标签
<script src="/bokeh/autoload.js?bokeh-autoload-element=1001&bokeh-app-path=/bokeh" id="1001"></script>
而且我在烧瓶控制台上收到此消息。这是一个标准的404:
"GET /bokeh/autoload.js?bokeh-autoload-element=1000&bokeh-app-path=/bokeh HTTP/1.1" 404 -
就这些。没有图形或按钮被呈现。我应该怎么改变才能看到该图?
编辑:我已经在bokeh代码中指定了端口和前缀。结果没有改变。
编辑2:我在烧瓶控制台上添加了404错误的控制台msj。
我无法在flask beind apache中运行bokeh服务器,所以现在我正在尝试在本地烧瓶中提供bokeh。该图未渲染。这是烧瓶的代码:从烧瓶导入Flask,render_template ...
我在@bigreddot的答案中添加了一些细节。
有些错误:
您尚未配置端口,因此Bokeh服务器将使用其默认端口5006(而非5000)
您尚未配置应用程序路径,因此Bokeh服务器将从其默认位置/
(不是/bokeh
)