2014-12-17 13 views
9

Dường như có tại ít nhất hai hoặc ba cách chính xây dựng ứng dụng rằng giao tiếp với bokeh-server trong Bokeh. Chúng tương ứng với foldersapp, embedplotting/glyphs trong thư mục examples trong Bokeh.Applet, nhúng và bokeh-server

Về sự khác biệt giữa họ, tôi đọc here sau:

Trên stock_app.py (app thư mục) ví dụ bạn đang sử dụng bokeh-server để nhúng một Applet và phục vụ nó từ url mà bạn chỉ định. Đó là lý do bạn vẽ một lớp mới StockApp và tạo một hàm tạo ra một thể hiện mới của nó và trang trí nó bằng @bokeh_app.route("/bokeh/stocks/")@object_page("stocks"). Bạn có thể theo dõi app ví dụ (thanh trượt, kho và bộ lọc chéo) và sử dụng bokeh @object_page@bokeh_app.route trang trí để tạo url tùy chỉnh của bạn.

Trên taylor_server.py dụ (glyphs thư mục) nó là đối tượng phiên rằng đang chăm sóc cho việc tạo ra tất cả mọi thứ trên bokeh-server cho bạn. Từ giao diện này không thể tùy chỉnh url hoặc tạo bí danh.

Nhưng điều này nhầm lẫn tôi, có nghĩa là gì một "applet" & "nhúng" trong thuật ngữ Bokeh, và những gì là chính xác ông sự khác biệt giữa các applet (có lẽ appembed) và plotting/glyphs? Ngoài ra tôi nghĩ rằng khái niệm "nhúng" chỉ đề cập đến mẫu thiết kế mà chúng ta thấy trong thư mục embed như trong ví dụ animated.py, trong đó chúng tôi nhúng một tag vào phần thân của tệp HTML. Tôi không thấy điều đó trong số stock_app.py, vậy tại sao nó lại là một ví dụ nhúng?

Trả lời

4

Nhưng điều này nhầm lẫn tôi, có nghĩa là gì một "applet" & "nhúng" trong ngữ Bokeh

Có rõ ràng là một sai lầm trong câu trả lời bạn đã dán ở đây (mà có lẽ doesn' t giúp bạn hiểu, xin lỗi). Ví dụ về ứng dụng cổ phiếu stock_app.py nằm trong ví dụ \ app \ stock_applet \ stock_app.py không nhúng thư mục. Ngoài ra, thuật ngữ được sử dụng cũng không giúp được gì.Mở ví dụ mà bạn tạo một applet có thể được phục vụ trong 2 cách khác nhau:

  1. chạy trực tiếp trên một bokeh-server
  2. nhúng (hoặc tích hợp nếu bạn thích) vào một ứng dụng riêng biệt (một ứng dụng Flask ở chỗ trường hợp)

Bạn có thể tìm thêm thông tin tại tệp examples\app\stock_applet\README.md.

Ngoài ra, bạn có thể tìm thấy thông tin về các applet và server bokeh examples documentationuserguide

Về những gì nhúng phương tiện, bạn có thể tìm thêm thông tin tại user_guide/nhúng phần của tài liệu bokeh. Để tóm tắt, bạn có thể tạo mã mà bạn có thể chèn vào mã ứng dụng web của riêng mình để hiển thị các thành phần bokeh. Ví dụ trong ví dụ \ embed cũng hữu ích khi hiểu mẫu này.

Cuối cùng, việc sử dụng máy chủ bokeh bạn thấy trong taylor_server.py chỉ sử dụng máy chủ bokeh để phục vụ cho bạn lô (thay vì lưu nó vào tệp html tĩnh).

Hope this helps ;-)

+0

Cảm ơn rất nhiều Fabio. Điều này rất hữu ích và rõ ràng ngay bây giờ. Lỗi của tôi trên thư mục 'stock_app.py' (tôi vừa cập nhật điều đó trên OP). –

3

Chỉ cần thêm một chút ... Tôi sẽ dán ở đây một trích dẫn từ Bryan trong mailing list (trong chủ đề khác, vì vậy có thể bạn bỏ lỡ nó):

Về ứng dụng và nhúng. "Ứng dụng" tất cả đều chạy bên trong máy chủ bokeh. Vì vậy, bạn bắt đầu họ, bằng cách làm một cái gì đó như:

bokeh-server --script sliders_app.py 

Lý do chính của việc này là bởi vì, nếu không, để thực hiện một "ứng dụng" bên ngoài máy chủ, chỉ có giải pháp thực sự là để có một dài chạy quá trình thăm dò ý kiến ​​của máy chủ để cập nhật. Điều này không lý tưởng và các ứng dụng chạy trực tiếp trong máy chủ có thể sử dụng các cuộc gọi lại tốt hơn nhiều. Xin lưu ý rằng khái niệm "ứng dụng" vẫn còn khá mới và mọi thứ như cách bắt đầu, dễ dàng đánh vần và triển khai ứng dụng rất cởi mở để cải thiện .

Ví dụ "nhúng" chỉ hiển thị cách nhúng âm mưu Bokeh trong một ứng dụng web tiêu chuẩn (nghĩa là bạn muốn phân phát âm mưu từ Flask có âm mưu trong đó). Điều này có thể được thực hiện với hoặc không có máy chủ bokeh, nhưng ngay cả khi bạn sử dụng máy chủ bokeh, không có mã nào đang chạy trong bokeh-server phản hồi các tiện ích hoặc cập nhật lô hoặc dữ liệu. Để cập nhật các ô, bạn phải có một quy trình python riêng biệt mà kết nối với máy chủ bokeh và thăm dò ý kiến ​​hoặc đẩy dữ liệu vào đó.

Chúc mừng.

Damian

Các vấn đề liên quan