Bokeh - Sunucu

Bokeh mimarisi, çizim ve glif gibi nesnelerin Python kullanılarak oluşturulduğu ve JSON'a dönüştürüldüğü bir ayrıştırma tasarımına sahiptir. BokehJS client library.

Bununla birlikte, nesneleri python ve tarayıcıda birbirleriyle senkronize halde tutmak, yardımıyla mümkündür. Bokeh Server. Bir tarayıcıda oluşturulan Kullanıcı Arayüzü (UI) olaylarına python'un tam gücü ile yanıt verilmesini sağlar. Ayrıca, sunucu tarafı güncellemelerinin bir tarayıcıdaki pencere öğelerine veya grafiklere otomatik olarak iletilmesine yardımcı olur.

Bir Bokeh sunucusu, Bokeh Belgeleri oluşturmak için Python'da yazılmış Uygulama kodunu kullanır. Bir istemci tarayıcısından gelen her yeni bağlantı, Bokeh sunucusunun yalnızca o oturum için yeni bir belge oluşturmasıyla sonuçlanır.

Öncelikle, istemci tarayıcısına sunulacak bir uygulama kodu geliştirmemiz gerekiyor. Aşağıdaki kod bir sinüs dalgası çizgi glifi oluşturur. Çizimle birlikte, sinüs dalgasının frekansını kontrol etmek için bir kaydırıcı kontrolü de oluşturulur. Geri arama işleviupdate_data() güncellemeler ColumnDataSource kaydırıcının anlık değerini geçerli frekans olarak alan veriler.

import numpy as np
from bokeh.io import curdoc
from bokeh.layouts import row, column
from bokeh.models import ColumnDataSource
from bokeh.models.widgets import Slider, TextInput
from bokeh.plotting import figure
N = 200
x = np.linspace(0, 4*np.pi, N)
y = np.sin(x)
source = ColumnDataSource(data = dict(x = x, y = y))
plot = figure(plot_height = 400, plot_width = 400, title = "sine wave")
plot.line('x', 'y', source = source, line_width = 3, line_alpha = 0.6)
freq = Slider(title = "frequency", value = 1.0, start = 0.1, end = 5.1, step = 0.1)
def update_data(attrname, old, new):
   a = 1
   b = 0
   w = 0
   k = freq.value
   x = np.linspace(0, 4*np.pi, N)
   y = a*np.sin(k*x + w) + b
   source.data = dict(x = x, y = y)
freq.on_change('value', update_data)
curdoc().add_root(row(freq, plot, width = 500))
curdoc().title = "Sliders"

Ardından, komut satırını izleyerek Bokeh sunucusunu başlatın -

Bokeh serve –show sliders.py

Bokeh sunucusu, uygulamayı localhost: 5006 / sliders'da çalıştırmaya ve sunmaya başlar. Konsol günlüğü aşağıdaki ekranı gösterir -

C:\Users\User>bokeh serve --show scripts\sliders.py
2019-09-29 00:21:35,855 Starting Bokeh server version 1.3.4 (running on Tornado 6.0.3)
2019-09-29 00:21:35,875 Bokeh app running at: http://localhost:5006/sliders
2019-09-29 00:21:35,875 Starting Bokeh server with process id: 3776
2019-09-29 00:21:37,330 200 GET /sliders (::1) 699.99ms
2019-09-29 00:21:38,033 101 GET /sliders/ws?bokeh-protocol-version=1.0&bokeh-session-id=VDxLKOzI5Ppl9kDvEMRzZgDVyqnXzvDWsAO21bRCKRZZ (::1) 4.00ms
2019-09-29 00:21:38,045 WebSocket connection opened
2019-09-29 00:21:38,049 ServerConnection created

Favori tarayıcınızı açın ve yukarıdaki adresi girin. Sinüs dalgası grafiği aşağıdaki gibi görüntülenir -

Kaydırıcıyı yuvarlayarak frekansı 2 olarak deneyebilir ve değiştirebilirsiniz.