Я хочу сериализовать документ bokeh в JSON, загрузить его снова, используя from_json
и from_json_string
[3], и обработать его.
Тем не менее, большинство примеров либо создают свой сервер, изменяя curdoc
[1], либо создавая приложение, которое получает и изменяет документ [2].
Тот факт, что яиспользование holoviews для генерации сюжета не должно менять вопрос, так что это ни в коем случае не вопрос holoviews;).
import pandas as pd
import holoviews as hv
from bokeh.document import Document
from bokeh.io.doc import curdoc, set_curdoc
import json
hv.extension('matplotlib')
hv.extension('bokeh')
print("- create dummy data")
df = pd.DataFrame(dict(x=[1, 2], y=[0, 1]))
print(df)
print("- plot as holoviews curve")
curve = hv.Curve(df, 'x', 'y', label='curve1').opts(ylabel='y')
print("- render in bokeh")
plot = hv.render(curve, backend='bokeh')
print("- serialize as bokeh document to JSON")
doc = Document()
doc.add_root(plot)
doc_json = doc.to_json()
json_string = json.dumps(doc_json)
print("- deserialize as bokeh document")
doc2 = Document.from_json_string(json_string)
print(doc2.roots[0])
Теперь я хочу создать что-то вроде следующего:
print("- embed document in bokeh application")
from bokeh.application.application import Application
app = Application()
app.initialize_document(doc)
print("- start bokeh server")
from bokeh.server.server import Server
server = Server(
{'/fubar':app}, # list of Bokeh applications
port=5010,
num_procs=1
)
print("- starting server on 'http://localhost:5010/fubar'")
server.start()
server.io_loop.start()
Это действительно работает, но ничего не показывает в моем браузере.Причина в том, что Приложение на самом деле требует Handler
, а не Document
.Но я не нашел документации о том, как я могу перевести одно на другое.
Tl; Dr Как я могу настроить сервер bokeh для обслуживания десериализованного документа?
[1] https://bokeh.pydata.org/en/latest/docs/user_guide/server.html
[2] https://bokeh.pydata.org/en/latest/docs/reference/application/handlers/function.html
[3] https://bokeh.pydata.org/en/latest/docs/reference/document.html