Bokeh - Máy chủ

Kiến trúc Bokeh có thiết kế tách rời trong đó các đối tượng như lô và glyph được tạo bằng Python và được chuyển đổi trong JSON để được sử dụng bởi BokehJS client library.

Tuy nhiên, có thể giữ các đối tượng trong python và trong trình duyệt đồng bộ với nhau với sự trợ giúp của Bokeh Server. Nó cho phép phản hồi các sự kiện Giao diện người dùng (UI) được tạo trong trình duyệt với toàn bộ sức mạnh của python. Nó cũng giúp tự động đẩy các bản cập nhật phía máy chủ vào các widget hoặc các ô trong trình duyệt.

Máy chủ Bokeh sử dụng mã Ứng dụng được viết bằng Python để tạo Tài liệu Bokeh. Mỗi kết nối mới từ trình duyệt máy khách dẫn đến máy chủ Bokeh tạo một tài liệu mới, chỉ cho phiên đó.

Đầu tiên, chúng tôi phải phát triển một mã ứng dụng để được cung cấp cho trình duyệt của khách hàng. Mã sau hiển thị một glyph đường sóng sin. Cùng với cốt truyện, một điều khiển thanh trượt cũng được hiển thị để kiểm soát tần số của sóng sin. Chức năng gọi lạiupdate_data() cập nhật ColumnDataSource dữ liệu lấy giá trị tức thời của thanh trượt làm tần số hiện tại.

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"

Tiếp theo, khởi động máy chủ Bokeh bằng cách làm theo dòng lệnh:

Bokeh serve –show sliders.py

Máy chủ Bokeh bắt đầu chạy và phục vụ ứng dụng tại localhost: 5006 / sliders. Nhật ký bảng điều khiển hiển thị màn hình sau:

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

Mở trình duyệt yêu thích của bạn và nhập địa chỉ trên. Biểu đồ sóng hình sin được hiển thị như sau:

Bạn có thể thử và thay đổi tần số thành 2 bằng cách lăn thanh trượt.