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)