В настоящее время я пытаюсь использовать сервер bokeh для отображения некоторых интерактивных диаграмм боке в своем приложении django, но у меня возникают трудности при подключении через views.py
.
Браузер возвращает ошибку OSE:
Cannot pull session document because we failed to connect to the server (to start the server, try the 'bokeh serve' command)
Сам сервер возвращает ошибку 404 для запроса:
200-03-31 08:17:09,179 404 GET /ws?bokeh-protocol-version=1.0&bokeh-session-id=ZhGn4XcmC1qDPYtF4SRPGPa1GzSgTqktqmvkIEGJke26 (127.0.0.1) 0.55ms
Мой сервер настроен следующим образом:
bokeh_server
|
|--main.py
main.py
очень базовая c диаграмма боке
main.py
from bokeh.io import curdoc
from bokeh.layouts import column
from bokeh.plotting import figure
from bokeh.models.sources import ColumnDataSource
source = ColumnDataSource(dict(x=list(range(5)), y=list(range(5))))
p = figure(width=300, height=300, tools=[], toolbar_location=None, name="test")
p.line(x='x', y='y', source=source)
curdoc().add_root(column(p, sizing_mode='scale_width'))
Бег сервер (bokeh serve bokeh_server
), а затем открытие https://localhost:5006
в браузере правильно отображает диаграмму (https://localhost:5006/bokeh_server
)
Проблема возникает, когда я пытаюсь открыть ее из приложения django.
views.py
from django.shortcuts import render
from django.http import HttpResponse
from bokeh.client import pull_session
def testbserver(request):
session = pull_session(url="http://localhost:5006/")
script = server_session(model=None,
session_id=None,
url="http://localhost:5006/",
)
return render(request, 'testserver.html', {'script':script})
urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.home, name='home'),
path('testbserver/', views.testbserver, name='testbserver'),
]
testserver. html
{% extends "base_generic.html" %}
{% block content %}
<div class="container-fluid">
<div class="row">
<div class="col-sm-12">
{{script | safe }}
</div>
</div>
</div>
{% endblock %}
Я попытался запустить сервер с разрешенными веб-сокетами (bokeh serve bokeh_server/ --allow-websocket-origin="*" --log-level trace
), но все равно получаю ту же ошибку.
Любые предложения по поводу других вещей с благодарностью принимаются!