Подключение к серверу панели Python (bokeh) отображает пустую html-страницу без сообщения об ошибке
У меня есть проект Django, в котором одна функция представления запускает сервер bokeh скриптом python.
Popen(["panel", "serve", "/opt/bitnami/projects/blog/EnviAI/scripts/visz_pn_ssm_1.py", "--show"])
В другом представлении я пытаюсь подключиться к серверу и отобразить приборную панель из visz_pn_ssm_1.py .
def redirect_bokeh_server(request):
session = pull_session(url="http://localhost:5006/visz_pn_ssm_1")
script = server_session(model=None,session_id=session.id,url="http://localhost:5006/visz_pn_ssm_1")
return render(request, 'dashboard_ssm.html', {'script' : script})
в моем dashboard_ssm.html
<body>
{{script | safe}}
</body>
Из консоли я получаю:
Запуск сервера Bokeh версии 2.4.2 (работает на Tornado 6.1)
2022-04-03 08:26:03,800 Хуки аутентификации пользователя НЕ предоставлены (пользователь по умолчанию включен)
2022-04-03 08:26:03,804 Приложение Bokeh запущено на: http://localhost:5006/visz_pn_ssm_12022-04-03
08:26:03,804 Запуск сервера Bokeh с идентификатором процесса: 269292022-04-03
08:26:06,550 WebSocket соединение открытоtest2022-04-03 08:26:07,762 ServerConnection created
Но страница пуста?
Содержание скрипта моей панели visz_pn_ssm_1.py:
import pandas as pd
import geopandas as gpd
import panel as pn
import hvplot.pandas
import pickle
pn.extension()
pn.config.js_files = {'deck': 'https://unpkg.com/deck.gl@~5.2.0/deckgl.min.js'}
pn.config.css_files = ['https://api.tiles.mapbox.com/mapbox-gl-js/v0.44.1/mapbox-gl.css']
with open ('/opt/bitnami/projects/data/filepath_ssm_user.pickl', 'rb') as temp:
res = pickle.load(temp)
# ried soil samples 30m 17-19
gdf = pd.read_csv(f'/opt/bitnami/projects/data/tables/{res[0]}'
,)[['date', 'ssm']].dropna().reset_index(drop=True)
gdf['date'] = gdf['date'].astype('datetime64[ns]')
#Options for Widgets
years = gdf.date.dt.year.unique()
# Widgets
year_slider = pn.widgets.IntSlider(name = 'Year', start=int(years.min()), end=int(years.max()), value=int(years[0]))
@pn.depends(year_slider)
def plot_data(year_slider):
data_select = gdf[gdf['date'].dt.year == year_slider]
# Scatter Plot
scatter = data_select.hvplot.scatter(
x = 'date',
y = 'ssm',
title = f'Oberflächennahe Bodenfeuchte'
)
return scatter
# Non Parameter Attributes
title = 'Oberflächennahe Bodenfeuchte berechnet mithilfe von Convolutional Neuronal Networks aus Sentinel 1 & 2 & ERA 5 Satelliten Daten'
header_box = pn.WidgetBox(title,
year_slider,
align="center"
)
# Plot Box
dashboard = pn.Row(header_box, plot_data)
# To start with panel serve script
dashboard.servable()