dak ブログ

python、rubyなどのプログラミング、MySQL、サーバーの設定などの備忘録。レゴの写真も。

gunicorn + flask でマルチプロセス

2022-06-10 21:51:17 | python
gunicorn + flask でマルチプロセスのウェブアプリケーションを作成する方法のメモ。

■インストール
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)


この記事についてブログを書く
« BigQuery で文字列から数値の... | トップ | mecab-python3 のインストール »

python」カテゴリの最新記事