サーブをする

単一のPythonスクリプトからBokehサーバ上でBokehアプリケーションを実行するには、スクリプト名を渡してください。 bokeh serve 命令行で:

bokeh serve app_script.py

デフォルトの場合、Bokehアプリケーションは、経路の下に位置するローカルホストのデフォルトポート(5006)上でBokehサーバによってサービスを提供します。 /app_script つまり、

http://localhost:5006/app_script

Jupyterノートも同じコマンドを実行することができます。

bokeh serve app_notebook.ipynb

これは、pythonスクリプトを使用して記述された結果と同じ結果を生成し、アプリケーションはローカルホストのデフォルトポート(5006)上のパスでサービスを提供します。 /app_notebook

ディレクトリからアプリケーションを作成することもできます。このディレクトリは1つを含むべきである main.py (および必要な任意の他のヘルパーモジュール)および任意の追加資産(例えば、主題ファイル)。ディレクトリ名を bokeh serve アプリケーションを実行するには、以下の操作を実行してください。

bokeh serve app_dir

複数のアプリケーションを同時に実行することができる:

bokeh serve app_script.py app_dir

HTMLページを表示するためにブラウザを自動的に開くには、渡すことができます --show コマンドライン上のオプション:

bokeh serve app_script.py app_dir --show

これは2ページ開きます /app_script そして /app_dir それぞれです。

コマンドラインパラメータをBokehアプリケーションに渡すには、 --args オプションは、コマンドライン上の最後のオプションとして:

bokeh serve app_script.py myapp.py --args foo bar --baz

それに伴うすべてのこと --args ここに含まれているのは sys.argv アプリケーションが実行されると。この場合には myapp.py 実行時には sys.argv はい。はい。 ['myapp.py', 'foo', 'bar', '--baz'] 標準Pythonとペア sys.argv それがそうです。

複数のスクリプトまたはディレクトリが提供されている場合、それらは、与えられた同じコマンドラインパラメータのセット(ある場合)を受信することに留意されたい。 --args それがそうです。

アプリケーションが1つしかない場合、サーバルートディレクトリはアプリケーションにリダイレクトされます。そうでなければ、サーバルートディレクトリのすべての実行中のアプリケーションのインデックスを見ることができます:

http://localhost:5006/

以下のコマンドでこのインデックスを無効にすることができます --disable-index オプション、リダイレクト行動が使用できます --disable-index-redirect 選択します。

複数のアプリケーションを実行する別の方法は、GLOB表現法を使用して、特定のパターンに一致するすべてのファイルを提供すべきであることを示すことである。

bokeh serve *.py

コマンドラインシェルは通常展開されます *.py 自動です。しかし,Bokehサーバをプログラミングで起動すると,shellはglobs付きファイル名パラメータを展開しない可能性がある.この場合には --glob フラグは、Bokehサーバにグローバルバインディングを明示的に実行させるために使用されることができる:

subprocess.call(["bokeh", "serve", "--glob", "*.py"])

アプリケーション構成

Bokehサーバは,下位のTornadoサーバをマルチプロセスに分岐させることができる.これは、特に高い計算負荷を必要とするアプリケーションコンテキストにおいて、複数の接続を処理しようと試みる際に非常に有用である。デフォルト行動はプロセスである.0を使用してカーネル数を自動的に検出し、対応する数のプロセスを起動します

bokeh serve app_script.py --num-procs 2

Tornado固有の制限により、Windowsはサポートされていませんのでご注意ください --num-procs 値が1より大きい!この場合、負荷分散装置の後に複数のBokehサーバインスタンスを実行することが考えられる。

Bokehサーバはまた、オプションのプレフィックスをすべてのURLパスに追加することができます。これは,“リバースエージェント”設定と組み合わせて使用する際に通常有用である.

bokeh serve app_script.py --prefix foobar

このアプリケーションは、以下のURLでサービスを提供します。

http://localhost:5006/foobar/app_script

必要であれば,Bokehサーバは一定間隔で活性化pingを送信することができる.この機能を構成するには、 --keep-alive 代替案:

bokeh serve app_script.py --keep-alive 10000

この値はミリ秒単位で指定される.デフォルトの保活間隔は37秒である.値0を設定すると保存pingが無効になる.

ネットワーク構成

Bokehサーバリスニングのポートを制御する場合は、ご利用ください --port 論点:

bokeh serve app_script.py --port 8080

任意のポートをリッスンする場合は、お渡しください 0 ポート番号として。実際のポート番号は起動時に記録される.

同様に、使用することができる --address 論争する。例:

bokeh serve app_script.py --address 0.0.0.0

Bokehサーバに利用可能なすべてのネットワークアドレスをリッスンさせます。

デフォルトでは,サイトをまたいでBokehサーバWebSocketへの接続は許可されていない.属性は他のホストのWebSocket接続を指定し,これらの接続を有効にすることができる. BOKEH_ALLOW_WS_ORIGIN 環境変数や --allow-websocket-origin 代替案:

bokeh serve app_script.py --allow-websocket-origin foo.com:8081

属性は、複数の許可されたWebSocketソースを指定することができます --allow-websocket-origin オプション、コンマで区切られたホストリストを提供します。 BOKEH_ALLOW_WS_ORIGIN

To have the Bokeh server override the remote IP and URI scheme/protocol for all requests with X-Real-Ip, X-Forwarded-For, X-Scheme, X-Forwarded-Proto headers (if they are provided), set the --use-xheaders option:

bokeh serve app_script.py --use-xheaders

SSLで終了したリバースプロキシの後にBokehサーバを実行する場合、通常はそうする必要がある。

警告

Internet向けのBokehサーバにこのオプションを設定しないことをお勧めします。

Bokehサーバはまた、SSL接続を直接終了することができ、方法は、証明書および証明書の真正性を確立するために必要な任意の数のCA証明書を含むPEMフォーマットの単一ファイルの経路を指定することである。

bokeh serve --ssl-certfile /path/to/cert.pem

あるいは、環境変数を設定することによって経路を提供することもできる BOKEH_SSL_CERTFILE それがそうです。

秘密鍵が個別に格納されている場合、その位置は設定によって --ssl-keyfile コマンドラインパラメータ、または設定によって BOKEH_SSL_KEYFILE 環境変数秘密鍵にパスワードが必要な場合は、設定によって BOKEH_SSL_PASSWORD 環境変数

セッションIDオプション

通常、Bokehサーバに接続された各ブラウザタブは、自分のセッションIDを有する。サーバがIDを生成すると,パスワード上で推測できなくなる.これは、ユーザが互いのセッションにアクセスすることを防止することができる。

誰がBokehアプリケーションを使用することができるかを制御するために、サーバは、鍵を用いてセッションIDに署名し、“でっち上げ”のセッション名を拒否することができる。3つのパターンがあります --session-ids 論点:

bokeh serve app_script.py --session-ids signed

利用可能なパターンとしては,未署名,署名済み,または外部署名がある.

はい。 unsigned モードでは、サーバは、URLからそれに提供される任意のセッションIDを受け取る。例えば http://localhost/app_script?bokeh-session-id=foo セッションを作成します foo それがそうです。はい。 unsigned セッションIDが一緒に提供されていない場合、モードに戻る ?bokeh-session-id= URLでは,サーバはパスワードでは推測できないIDを生成する.しかしながら、サーバは、クライアントが必要に応じて推測または意図的に共有可能なセッションを作成することを可能にする。

unsigned サーバが開発のためにローカルに実行されるとき、モードが最も有用であり、例えば、複数のプロセスに固定されたセッション名、例えば、複数のプロセスをアクセスさせることができる。 default それがそうです。 unsigned 鍵を生成または構成する必要がないので、モードも便利である。

はい。 signed モードでは、セッションIDは、特別なフォーマットを採用し、鍵署名を使用しなければならない。無効なセッションIDを持つアプリケーションを使用しようと試みると失敗するが,なければ失敗する. ?bokeh-session-id= パラメータ、サーバは、新しい署名セッションIDを生成する。 signed モードは、セキュリティセッションIDのみを許可するが、誰でもサーバに接続することができる。

はい。 external-signed モードでは、セッションIDに署名しなければならないが、サーバ自体はセッションIDを生成しない。 ?bokeh-session-id= パラメータが必要である.このモデルを用いるためには,外部プロセス(例えば他のWebアプリケーション)がこの関数を使用する. bokeh.util.token.generate_session_id() 有効なセッションIDを作成するには、以下の操作を実行してください。外部プロセスとBokehサーバは同じプロセスを共有しなければならない. BOKEH_SECRET_KEY 環境変数

external-signed 別のプロセスがBokehサーバへのアクセスを検証することを望む場合、モードは非常に有用です。誰かがBokehアプリケーションを使用することを許可された場合、あなたは、彼らのためにセッションIDを生成し、その後、有効なセッションIDを使用してBokehサーバにリダイレクトする。誰かのためのセッションIDを生成していない場合、Bokehサーバからアプリケーションをロードすることができません。

両方とも美しい. signed そして external-signed モードでは、鍵は秘密でなければならず、鍵を持つ人は誰でも有効なセッションIDを生成することができる。

鍵は BOKEH_SECRET_KEY 環境変数は、少なくとも256ビット(32バイト)のエントロピーを有する暗号化されたランダム文字列であるべきである。♪the bokeh secret コマンドは新しい鍵を生成することができる.

アイデンティティ検証オプション

Bokehサーバは、正しい認証を受けたユーザが存在する場合にのみ接続を許可するように構成することができる。これは、コマンドライン上に必要な機能を実現するモジュールの経路を提供することによって実現される。

bokeh serve --auth-module=/path/to/auth.py

あるいはそれを BOKEH_AUTH_MODULE 環境変数

このモジュールは one 以下の2つの関数は、現在のユーザ(またはなし)に戻る。

def get_user(request_handler):
    pass

async def get_user_async(request_handler):
    pass

この関数はTornadoに伝達されます RequestHandler また、認証されたユーザを決定するためにクッキーまたは要求ヘッダをチェックすることができる。有効な認証されたユーザがいない場合、これらの関数はNONEに返されるべきである。

さらに、モジュールは、認証されていないユーザをどこにリダイレクトするかを指定しなければならない。これは以下のいずれかを含まなければならない。

  • モジュール属性 login_url (オプション) LoginHandler クラス

  • の関数定義 get_login_url

login_url = "..."

class LoginHandler(RequestHandler):
    pass

def get_login_url(request_handler):
    pass

親戚になる login_url 与えられたものはオプションである LoginHandler クラスも提供可能であり,ルーティングとしてBokehサーバに自動的に実装される.

♪the get_login_url 関数は,登録URLが要求やCookieなどに応じて変化しなければならない場合に非常に有用である. LoginHandler 当たる get_url_function 定義されています

ログインオプションと同様に、オプション logout_url そして LogoutHandler 値は、ログアウトユーザを定義するためのエンドポイントであってもよい。

認証モジュールが提供されていない場合、デフォルトユーザと仮定し、Bokehサーバエンドポイントにアクセスするには認証を必要としない。

警告

AUTHモジュールの内容を実行します!

Bokehはまた、TornadoのXFRFクッキー保護を有効にすることができる。この機能を開くには、ご利用ください --enable-xsrf-cookies オプション、または環境変数の設定 BOKEH_XSRF_COOKIES=yes それがそうです。この設定を有効にすると、カスタムハンドラまたは登録ハンドラ上の任意のPUT、POST、またはDELETE動作を正確に検出して正常に動作しなければなりません。通常これは xsrf_form_html() モジュールはHTMLフォームにテンプレートを提出する.完全な詳細については、以下を参照されたい。

Https://www.tornadoweb.org/en/Stability/Guide/security.html#サイト間の偽造保護要求

セッション満了オプション

構成は、セッションが使用されていない頻度をチェックします。設ける --check-unused-sessions 代替案:

bokeh serve app_script.py --check-unused-sessions 10000

この値はミリ秒単位で指定される.セッションが使用されていないことをチェックするデフォルト間隔は17秒である.正整数値のみを受け取る.

未使用のセッション継続の頻度を配置するには、以下の操作を実行してください。設ける --unused-session-lifetime 代替案:

bokeh serve app_script.py --unused-session-lifetime 60000

この値はミリ秒単位で指定される.セッション未使用のデフォルト生存期間は15秒間隔であった.正整数値のみを受け取る.

診断オプション

ログ記録レベルは --log-level 論点:

bokeh serve app_script.py --log-level debug

利用可能なログレベルは、TRACE、DEBUG、INFO、WARNING、ERROR、またはCRITICALです。

ログフォーマットは --log-format 論点:

bokeh serve app_script.py --log-format "%(levelname)s: %(message)s"

デフォルトログフォーマットは "%(asctime)s %(message)s"

統計ログの書き込み頻度を制御する場合は、 --stats-log-frequency 代替案:

bokeh serve app_script.py --stats-log-frequency 30000

この値はミリ秒単位で指定される.統計情報を記録するデフォルト間隔は15秒である.正整数値のみを受け取る.

Bokehはプロセスメモリ使用状況を選択的に記録することも可能である.この機能にはオプションが必要です psutil インストールするパッケージ。メモリログ記録を有効にするためには、 --mem-log-frequency 代替案:

それがそうです。コードブロック:sh

Bokeh service app_script.py--mem-log-Frequency 30000

この値はミリ秒単位で指定される.統計情報を記録するデフォルト間隔は0(無効)である.正整数値のみを受け取る.

class Serve(parser: argparse.ArgumentParser)[ソース]

サブコマンドは、Bokehサーバを起動します。

customize_kwargs(args: argparse.Namespace, server_kwargs: Dict[str, Any]) → Dict[str, Any][ソース]

子類カスタマイズを許す server_kwargs それがそうです。

修正して戻るべきです server_kwargs 辞書です。

invoke(args: argparse.Namespace)None[ソース]
name: str = 'serve'

この子命令の名前