「Gunicorn」はWSGIに対応したPythonのWebサーバー(HTTPサーバー)です。
Gunicornはリクエストを受け付けると、ワーカープロセスを生成(fork)して処理を任せます。
ワーカープロセスで重いファイルをロードすると、リクエストのたびに時間がかかってしまいます。
このエントリでは、Gunicornで前もってロードしておくpreload_appオプションを紹介します。
Gunicornには、プロセスをフォークする前にロードしておくことができるpreload_appオプションがあります。
例えば機械学習のモデルや辞書といった重いファイルは、前もってロードしておくことで大幅な時間短縮に繋がります。
preload_appオプションを使うには、サーバー起動時に--preload
オプションを指定するだけです。
$ gunicorn --preload app.wsgi
preload_appオプションの説明
Load application code before the worker processes are forked.By preloading an application you can save some RAM resources as well as speed up server boot times. Although, if you defer application loading to each worker process, you can reload your application code easily by restarting workers.
preload_appオプションを使って重いファイルをプリロードするには、アプリケーションのロード時にプリロードが実行されなければなりません。
例えば、ルーティングによるリクエストのディスパッチ後に呼び出されるメソッド内でロードしても、プリロードの恩恵は受けられないことに注意が必要です。
以上です。
このエントリでは、Gunicornで前もってロードしておくpreload_appオプションを紹介しました。
コメントを送る
コメントはブログオーナーのみ閲覧できます