Bokeh-Server¶
Die Architektur von Bokeh ist so, dass übergeordnete Modellobjekte, also Darstellungen wie Plots, Bereiche, Achsen, Glyphen usw.) in Python erstellt und dann in ein JSON-Format konvertiert werden, das von der Client-Bibliothek BokehJS
verwendet wird. Mit Hilfe des Bokeh-Servers können die Modellobjekte in Python und im Browser miteinander synchronisiert werden, wodurch mächtige Funktionen geschaffen werden:
Browser-Events führen zu serverseitigen Python-Berechnungen oder -Abfragen
Automatische Push-Aktualisierung des Browser-UI (z.B. Widgets oder Plots)
Periodische, Timeout- und asynchronen Callbacks für Streaming-Updates
Diese Funktion zur Synchronisierung zwischen serverseitigem Python und dem Browser ist der Hauptzweck des Bokeh-Servers.
Es ist auch möglich, Bokeh-Anwendungen zu definieren, indem ein Standard-Python-Skript erstellt wird. In diesem Fall ist es nicht erforderlich, eine Funktion wie modify_doc
zu erstellen. Normalerweise erstellt das Skript einfach alle Bokeh-Kontingente und fügt es mit einer Zeile dem Dokument hinzu:
curdoc().add_root(layout)
Um das Beispiel unten auszuprobieren, kopiert den Code in eine Datei hello.py
und führt dann Folgendes aus:
$ pipenv run python -m bokeh serve --show hello.py
[1]:
from bokeh.io import curdoc
from bokeh.layouts import column
from bokeh.models.widgets import Button, Paragraph, TextInput
# create some widgets
button = Button(label="Say Hi")
input = TextInput(value="Pythonistas")
output = Paragraph()
# add a callback to a widget
def update():
output.text = "Hello, " + input.value + "!"
button.on_click(update)
# create a layout for everything
layout = column(button, input, output)
# add the layout to curdoc
curdoc().add_root(layout)