run(port=8008, debug=False, max_num_threads=4, in_background=None, reload_source_changes=None, max_in_memory_file_upload_size=None, max_request_size=None, settings=None, ports=[])
-
サーバーを開始し、着信HTTPコネクションのポートをリッスンし、既に登録済みのURLハンドラーとAPIハンドラーをコールします。
-
in_background
がTrue以外の場合、且つ、hython
からサーバーを起動した場合、ターミナルでLinuxとMacでは⌃ Ctrl + C、Windowsでは⌃ Ctrl + Break/⌃ Ctrl + ScrLkを押すことでサーバーを停止することができます。
port
リッスンするポート番号。 このポートが既に使用中、または、プロセスがそのポート番号のリッスンの許可がされていない場合、この関数はhwebserver.OperationFailedを引き起こします。
debug
これがTrue
の場合、サーバーはコンソールログメッセージを書き出し、リクエストを処理した時に発生したPython例外のスタックトレースを表示します。
また、レスポンスボディにもスタックトレースを返します。
hython
からサーバーを起動した場合、これはさらにreload_source_changes
をTrue
に設定します。
hwebserver.isInDebugModeを使用すれば、サーバーがデバッグモードで起動しているかどうかをチェックすることができます。
max_num_threads
同時リクエストを処理するために作成される並列ワーカースレッドの最大数。
hwebserver
パッケージ内のどのコールもグローバルロックを確保し、Pythonハンドラー関数は必ずGIL(Global Interpreter Lock:グローバルインタプリタロック)を確保しなければならないので、
通常ではハンドラーは並列で実行することはできません。
マルチスレッド化で速度の恩恵が得られるのは、主に静的ファイルを提供したり、Houdiniを必要としないPythonからのI/O操作のブロッキングをする時です。
in_background
この関数が別のスレッドでサーバーを起動するかどうか。
in_background=False
を渡すと、サーバーを中断しない限り、または、サーバーコードがhwebserver.requestShutdownをコールしない限り、決して戻りません。
in_background
がNone(デフォルト値)の場合、グラフィカルHoudiniセッションではTrue
、それ以外はFalse
に設定されます。
reload_source_changes
これがTrue
の場合、サーバーは、読み込まれているすべてのPythonソースファイルを監視して、それらのどれかに変更がある度にサーバーを再起動します。
これによって、サーバーを手動で停止して再起動する必要なくPythonコードを編集してその結果を確認することができます。
max_in_memory_file_upload_size
一時ファイルへ書き出さずにメモリに保持されるアップロードファイルの最大サイズ(単位はバイト)。 デフォルトでは、サーバーは2.5MB未満のアップロードファイルをメモリに保持し、それより大きいファイルはディスクに書き出します。 ここ引数は、その閾値を上書きすることができます。
max_request_size
HTTPリクエストの最大サイズ(単位はバイト)。
これがNone
の場合、デフォルト値は3GBです。
settings
ウェブサーバーに追加設定する設定ファイルを指定します。 現在のところ、ここにはCORSホワイトリストしか指定できません。 これは、Django設定ファイルと同様に動作します。
ports
サーバーがリッスンする追加ポート。
verbosity
サーバーがログに出す詳細度。デフォルト設定はlowです。
port_callback
プログラムがサーバーで起動されている実際のポート番号を知る必要がある場合、ポートコールバックを使用することで、実際のポート番号を取得することができます。 このコールバックは初期化ステージのどの段階でコールされるのか保証がないので、このコールバックを初期化関数として使用することは推奨しません。
up_to_port
port
パラメータのポート番号がリッスンに失敗したら、このパラメータのポート番号までのすべてのポートを試みます。
例えば、ポート番号が80で、このパラメータが90とすると、81から90までのすべてのポートが試されて、それで失敗したら諦めます。
この範囲でリッスン可能な最初のポートがサーバーのメインポートとして使用されます。
use_free_port_on_failure
ポート範囲と初期ポートのどちらも空きポートの検索に失敗した場合、OS側で空きポートを拾わせます。 サーバーが実際のポート番号をあまり気にせず、ただ空きポートさえ見つかれば良いのであれば、ポート範囲の代わりにこのパラメータを使用すると良いでしょう。
See also |