gunicorn + flask でマルチプロセスのウェブアプリケーションを作成する方法のメモ。
■インストール
■プログラム構成
test.py: ウェブアプリケーション本体
settings.py: gunicorn の設定
■test.py
3秒スリープして、サーバのプロセスIDを含む文字列を返却します。
■settings.py
以下は 4 ワーカー(プロセス)でアプリケーションを実行する例です。
■ウェブアプリケーション実行
実行すると、以下のように複数のプロセスIDで worker が
■サーバにアクセス
curl コマンドを & をつけて4回実行してみます。
以下のように複数のプロセスからレスポンスがあったことが確認できます。
■インストール
pip install gunicorn pip install flask
■プログラム構成
test.py: ウェブアプリケーション本体
settings.py: gunicorn の設定
■test.py
3秒スリープして、サーバのプロセスIDを含む文字列を返却します。
import os import time from flask import Flask app = Flask(__name__) @app.route('/test') def view_test(): time.sleep(3) pid = os.getpid() msg = f'''hello world ({pid})\n''' return msg
■settings.py
以下は 4 ワーカー(プロセス)でアプリケーションを実行する例です。
bind = '127.0.0.1:8000' proc_name = 'test' workers = 4
■ウェブアプリケーション実行
gunicorn test:app -c settings.py
実行すると、以下のように複数のプロセスIDで worker が
[4942] [INFO] Booting worker with pid: 4942 [4943] [INFO] Booting worker with pid: 4943 [4944] [INFO] Booting worker with pid: 4944 [4945] [INFO] Booting worker with pid: 4945
■サーバにアクセス
curl コマンドを & をつけて4回実行してみます。
curl 'http://localhost:8000/test'& curl 'http://localhost:8000/test'& curl 'http://localhost:8000/test'& curl 'http://localhost:8000/test'&
以下のように複数のプロセスからレスポンスがあったことが確認できます。
hello world (4944) hello world (4943) hello world (4942) hello world (4945)