2017-07-28 7 views
1

私はプロットとデータを保持するためにBokehサーバを使いたいので、Bokehアプリケーションをウェブサイトに埋め込むことができます。私はボケ0.12.6ドキュメントに与えられたexampleを再作成しようとしている:サーバコールバックを必要とするBokehアプリケーションを正しくデプロイするには?

from bokeh.client import push_session 
from bokeh.embed import autoload_server 
from bokeh.plotting import figure, curdoc 

# figure() function auto-adds the figure to curdoc() 
plot = figure() 
plot.circle([1,2], [3,4]) 

session = push_session(curdoc()) 
script = autoload_server(plot, session_id=session.id) 

だから私はボケサーバを起動し、のようなこのPythonプログラムを実行している:

bokeh serve --show animated.py 

エラー私は

File "session.py", line 298, in push: 
raise IOError("Cannot push session document because we failed to connect to the server (to start the server, try the 'bokeh serve' command)") Traceback (most recent call last): 
File "/Users/.../anaconda/lib/python3.5/site-packages/bokeh/application/handlers/code_runner.py", line 81, in run 
exec(self._code, module.__dict__) 
File "/Users/.../Documents/.../.../animated.py", line 9, in <module> 
session = push_session(curdoc()) 
File "/Users/.../anaconda/lib/python3.5/site-packages/bokeh/client/session.py", line 86, in push_session 
session.push(document) 
File "/Users/.../anaconda/lib/python3.5/site-packages/bokeh/client/session.py", line 298, in push 
raise IOError("Cannot push session document because we failed to connect to the server (to start the server, try the 'bokeh serve' command)") 
OSError: Cannot push session document because we failed to connect to the server (to start the server, try the 'bokeh serve' command) 

この問題を解決するにはどうすればよいですか? autoload_server()が完全に間違ったアプローチである場合、Bokehアプリケーションを展開する他の方法は何ですか?

答えて

4

あなたがボケアプリがのように見えるたいと思う:あなたは経由でこのサービスを提供します

### contents of app.py 

from bokeh.client import push_session 
from bokeh.embed import server_document 
from bokeh.plotting import figure, curdoc 

plot = figure() 
plot.circle([1,2], [3,4]) 

doc = curdoc() 
doc.add_root(plot) 

:(あなたが原点kwarg、YMMVを必要としない場合があります)

bokeh serve app.py --allow-websocket-origin="*" 

をそのサーバーを知りますアプリがhttp://localhost:5006/ss(または実行中のアプリのターミナルに記載されている端末)から実行している場合は、そこから読み込むスクリプトを作成します。

ザ・あなたは(おそらく神社テンプレートにスクリプトを読み込む)何とか自分のWebページでそのスクリプトを埋め込み、ここでは基本的なHTMLテンプレートに貼り付けコピーです:

<!doctype html> 

<html lang="en"> 
<head> </head> 

<body> 
    <script 
     src="http://localhost:5006/ss/autoload.js?bokeh-autoload-element=435ac063-5288-41b9-8375-31907dd5f124&bokeh-app-path=/ss&bokeh-absolute-url=http://localhost:5006/ss" 
     id="435ac063-5288-41b9-8375-31907dd5f124" 
     data-bokeh-model-id="" 
     data-bokeh-doc-id=""></script> 
</body> 
</html> 

上記のHTMLドキュメントを開くとページを開く必要がありますプロット。

+1

誤ったautoload_server kwargsを使用していました。私はそれ以来、正確さのために編集しました。 –

+0

クイックフォローアップ:このアプリを個人のウェブサイトで動的に実行したい場合は、Bokeh CDNへのリンクを追加しますか?または、私はそれをどうやってやりますか? – swetharevanur

+1

いいえ、Bokehサーバーアプリケーションは、自動的にbokehサーバー自体からリソースを自動的に読み込みます。 – bigreddot

関連する問題