Bokeh 2.3.1, Python 3.8
I am embedding a server page inside a flask page. Server and flask will (eventually) run in Azure environment.
I can get a basic bokeh plot up (see example) but more complex page is not loading with JS errors (see below):
Simple plot (works)
from bokeh.layouts import column
from bokeh.plotting import curdoc, figure
from bokeh.themes import Theme
fruits = ["Apples", "Pears", "Nectarines", "Plums", "Grapes", "Strawberries"]
counts = [5, 3, 4, 2, 4, 6]
p = figure(
x_range=fruits,
plot_height=250,
title="Fruit Counts",
toolbar_location=None,
tools="",
)
p.vbar(x=fruits, top=counts, width=0.9)
p.xgrid.grid_line_color = None
p.y_range.start = 0
curdoc().add_root(column(p))
Complex plot is too big to include but I currently have it publicly exposed at: https://apps.amalfiblue.com/ceoperformance which works (albeit slowish load)
The calling flask reference looks a bit like this:
@home_bp.route('/ceoperf_app', methods=['GET'])
def ceoperf_app():
"""CEO Performance Embed"""
with pull_session(url="https://apps.amalfiblue.com/ceoperformance") as session:
script = server_session(session_id=session.id, url="https://apps.amalfiblue.com/ceoperformance")
return render_template("embed.jinja2",
# user=session["amalfiblueUser"],
script=script,
title='CEO Performance'
)
This works when I direct it to the simple page (top) but when directed at the more complex page which looks like this…
class CEOPerformance():
.... lots of code to define class with tabs and such as shown...
dataDir = 'ceoperformance/CEOData/'
#dataDir = 'CEOData/'
print('Here')
ceoperf = CEOPerformance(dataDir)
curdoc().title = "CEO Performance"
curdoc().add_root(ceoperf.make_doc())
When I try sending the flask link to this URL I get this in the console…
WebSocket connection to 'ws://apps.amalfiblue.com/ceoperformance/ws' failed:
connect @ bokeh.min.js?v=c398083b96ab5947b8595645968506f346bad6c68d652313ba142d90c4976b14379090fb372b9c8fbdf69341a936f95e6ae7fbdc8cb2be7911ad5e2fbd8433e2:585
n.pull_session @ bokeh.min.js?v=c398083b96ab5947b8595645968506f346bad6c68d652313ba142d90c4976b14379090fb372b9c8fbdf69341a936f95e6ae7fbdc8cb2be7911ad5e2fbd8433e2:585
(anonymous) @ bokeh.min.js?v=c398083b96ab5947b8595645968506f346bad6c68d652313ba142d90c4976b14379090fb372b9c8fbdf69341a936f95e6ae7fbdc8cb2be7911ad5e2fbd8433e2:584
t.add_document_from_session @ bokeh.min.js?v=c398083b96ab5947b8595645968506f346bad6c68d652313ba142d90c4976b14379090fb372b9c8fbdf69341a936f95e6ae7fbdc8cb2be7911ad5e2fbd8433e2:584
w @ bokeh.min.js?v=c398083b96ab5947b8595645968506f346bad6c68d652313ba142d90c4976b14379090fb372b9c8fbdf69341a936f95e6ae7fbdc8cb2be7911ad5e2fbd8433e2:163
t.embed_items @ bokeh.min.js?v=c398083b96ab5947b8595645968506f346bad6c68d652313ba142d90c4976b14379090fb372b9c8fbdf69341a936f95e6ae7fbdc8cb2be7911ad5e2fbd8433e2:163
bokeh.min.js?v=c398083b96ab5947b8595645968506f346bad6c68d652313ba142d90c4976b14379090fb372b9c8fbdf69341a936f95e6ae7fbdc8cb2be7911ad5e2fbd8433e2:585 [bokeh] Failed to connect to Bokeh server: Could not open websocket
_on_error @ bokeh.min.js?v=c398083b96ab5947b8595645968506f346bad6c68d652313ba142d90c4976b14379090fb372b9c8fbdf69341a936f95e6ae7fbdc8cb2be7911ad5e2fbd8433e2:585
socket.onerror @ bokeh.min.js?v=c398083b96ab5947b8595645968506f346bad6c68d652313ba142d90c4976b14379090fb372b9c8fbdf69341a936f95e6ae7fbdc8cb2be7911ad5e2fbd8433e2:585
error (async)
(anonymous) @ bokeh.min.js?v=c398083b96ab5947b8595645968506f346bad6c68d652313ba142d90c4976b14379090fb372b9c8fbdf69341a936f95e6ae7fbdc8cb2be7911ad5e2fbd8433e2:585
connect @ bokeh.min.js?v=c398083b96ab5947b8595645968506f346bad6c68d652313ba142d90c4976b14379090fb372b9c8fbdf69341a936f95e6ae7fbdc8cb2be7911ad5e2fbd8433e2:585
n.pull_session @ bokeh.min.js?v=c398083b96ab5947b8595645968506f346bad6c68d652313ba142d90c4976b14379090fb372b9c8fbdf69341a936f95e6ae7fbdc8cb2be7911ad5e2fbd8433e2:585
(anonymous) @ bokeh.min.js?v=c398083b96ab5947b8595645968506f346bad6c68d652313ba142d90c4976b14379090fb372b9c8fbdf69341a936f95e6ae7fbdc8cb2be7911ad5e2fbd8433e2:584
t.add_document_from_session @ bokeh.min.js?v=c398083b96ab5947b8595645968506f346bad6c68d652313ba142d90c4976b14379090fb372b9c8fbdf69341a936f95e6ae7fbdc8cb2be7911ad5e2fbd8433e2:584
w @ bokeh.min.js?v=c398083b96ab5947b8595645968506f346bad6c68d652313ba142d90c4976b14379090fb372b9c8fbdf69341a936f95e6ae7fbdc8cb2be7911ad5e2fbd8433e2:163
t.embed_items @ bokeh.min.js?v=c398083b96ab5947b8595645968506f346bad6c68d652313ba142d90c4976b14379090fb372b9c8fbdf69341a936f95e6ae7fbdc8cb2be7911ad5e2fbd8433e2:163
async function (async)
t.embed_items @ bokeh.min.js?v=c398083b96ab5947b8595645968506f346bad6c68d652313ba142d90c4976b14379090fb372b9c8fbdf69341a936f95e6ae7fbdc8cb2be7911ad5e2fbd8433e2:163
embed_document @ b8f05053-5ed7-4487-8737-e4851ee61480:118
(anonymous) @ b8f05053-5ed7-4487-8737-e4851ee61480:122
(anonymous) @ b8f05053-5ed7-4487-8737-e4851ee61480:138
o.safely @ bokeh.min.js?v=c398083b96ab5947b8595645968506f346bad6c68d652313ba142d90c4976b14379090fb372b9c8fbdf69341a936f95e6ae7fbdc8cb2be7911ad5e2fbd8433e2:593
fn @ b8f05053-5ed7-4487-8737-e4851ee61480:112
(anonymous) @ b8f05053-5ed7-4487-8737-e4851ee61480:141
inline_js @ b8f05053-5ed7-4487-8737-e4851ee61480:143
run_inline_js @ b8f05053-5ed7-4487-8737-e4851ee61480:154
(anonymous) @ b8f05053-5ed7-4487-8737-e4851ee61480:165
(anonymous) @ b8f05053-5ed7-4487-8737-e4851ee61480:27
run_callbacks @ b8f05053-5ed7-4487-8737-e4851ee61480:25
on_load @ b8f05053-5ed7-4487-8737-e4851ee61480:55
load (async)
load_libs @ b8f05053-5ed7-4487-8737-e4851ee61480:80
(anonymous) @ b8f05053-5ed7-4487-8737-e4851ee61480:163
(anonymous) @ b8f05053-5ed7-4487-8737-e4851ee61480:168
bokeh.min.js?v=c398083b96ab5947b8595645968506f346bad6c68d652313ba142d90c4976b14379090fb372b9c8fbdf69341a936f95e6ae7fbdc8cb2be7911ad5e2fbd8433e2:584 [bokeh] Failed to load Bokeh session uURfJvdway36FgAd1Ny6nbApnx7tBSM4IFEBfIDndxXN: Error: Could not open websocket
t.add_document_from_session @ bokeh.min.js?v=c398083b96ab5947b8595645968506f346bad6c68d652313ba142d90c4976b14379090fb372b9c8fbdf69341a936f95e6ae7fbdc8cb2be7911ad5e2fbd8433e2:584
async function (async)
t.add_document_from_session @ bokeh.min.js?v=c398083b96ab5947b8595645968506f346bad6c68d652313ba142d90c4976b14379090fb372b9c8fbdf69341a936f95e6ae7fbdc8cb2be7911ad5e2fbd8433e2:584
w @ bokeh.min.js?v=c398083b96ab5947b8595645968506f346bad6c68d652313ba142d90c4976b14379090fb372b9c8fbdf69341a936f95e6ae7fbdc8cb2be7911ad5e2fbd8433e2:163
t.embed_items @ bokeh.min.js?v=c398083b96ab5947b8595645968506f346bad6c68d652313ba142d90c4976b14379090fb372b9c8fbdf69341a936f95e6ae7fbdc8cb2be7911ad5e2fbd8433e2:163
async function (async)
t.embed_items @ bokeh.min.js?v=c398083b96ab5947b8595645968506f346bad6c68d652313ba142d90c4976b14379090fb372b9c8fbdf69341a936f95e6ae7fbdc8cb2be7911ad5e2fbd8433e2:163
embed_document @ b8f05053-5ed7-4487-8737-e4851ee61480:118
(anonymous) @ b8f05053-5ed7-4487-8737-e4851ee61480:122
(anonymous) @ b8f05053-5ed7-4487-8737-e4851ee61480:138
o.safely @ bokeh.min.js?v=c398083b96ab5947b8595645968506f346bad6c68d652313ba142d90c4976b14379090fb372b9c8fbdf69341a936f95e6ae7fbdc8cb2be7911ad5e2fbd8433e2:593
fn @ b8f05053-5ed7-4487-8737-e4851ee61480:112
(anonymous) @ b8f05053-5ed7-4487-8737-e4851ee61480:141
inline_js @ b8f05053-5ed7-4487-8737-e4851ee61480:143
run_inline_js @ b8f05053-5ed7-4487-8737-e4851ee61480:154
(anonymous) @ b8f05053-5ed7-4487-8737-e4851ee61480:165
(anonymous) @ b8f05053-5ed7-4487-8737-e4851ee61480:27
run_callbacks @ b8f05053-5ed7-4487-8737-e4851ee61480:25
on_load @ b8f05053-5ed7-4487-8737-e4851ee61480:55
load (async)
load_libs @ b8f05053-5ed7-4487-8737-e4851ee61480:80
(anonymous) @ b8f05053-5ed7-4487-8737-e4851ee61480:163
(anonymous) @ b8f05053-5ed7-4487-8737-e4851ee61480:168
bokeh.min.js?v=c398083b96ab5947b8595645968506f346bad6c68d652313ba142d90c4976b14379090fb372b9c8fbdf69341a936f95e6ae7fbdc8cb2be7911ad5e2fbd8433e2:163 Error rendering Bokeh items: Error: Could not open websocket
at d._on_error (bokeh.min.js?v=c398083b96ab5947b8595645968506f346bad6c68d652313ba142d90c4976b14379090fb372b9c8fbdf69341a936f95e6ae7fbdc8cb2be7911ad5e2fbd8433e2:585)
at WebSocket.socket.onerror (bokeh.min.js?v=c398083b96ab5947b8595645968506f346bad6c68d652313ba142d90c4976b14379090fb372b9c8fbdf69341a936f95e6ae7fbdc8cb2be7911ad5e2fbd8433e2:585)
bokeh.min.js?v=c398083b96ab5947b8595645968506f346bad6c68d652313ba142d90c4976b14379090fb372b9c8fbdf69341a936f95e6ae7fbdc8cb2be7911ad5e2fbd8433e2:585 [bokeh] Lost websocket 0 connection, 1006 ()
bokeh.min.js?v=c398083b96ab5947b8595645968506f346bad6c68d652313ba142d90c4976b14379090fb372b9c8fbdf69341a936f95e6ae7fbdc8cb2be7911ad5e2fbd8433e2:585 [bokeh] Websocket connection 0 disconnected, will not attempt to reconnect
Is this potentially a timeout or load issue that can be resolved? I checked the JS Console network pane and it doesn’t look like more than (or anywhere near) 20MB of page load.
tx
Andrew