【Python】uWSGIとGunicorn違いが判らなかったので調べてみた
- 2020.11.10
- Python備忘録
- Django, Docker, Gunicorn, Python 3系, uWSGI, Webサーバー, WSGI, アプリケーションサーバー, ひとりごと, 備忘録, 情報収集, 自作システム
【Python】uWSGIとGunicorn違いが判らなかったので調べてみた
Dockerでの構築ではまったのがWSGIとNGINXのやり取り。
私の持っているpythonの参考書がGunicornを使っていて、WEB上にはuWSGIの事例が沢山。
「そういえばアプリケーションサーバーの違い知らないや」と思い調べてみました。
そもそもWSGIとはなんぞや
PEP3333で定義された仕様の事で、Web Server Gateway Interfaceの略。
Python 3では文字列とバイト列が「違うモノ」として扱われるようになり、バイナリはbytes型、「文字列」はUnicode文字列のことを表すようになった。それまでは例えばHTTPヘッダのデータはテキスト/バイナリどちらとしても扱われていたが、どちらで扱うかを決めなくてはいけなくなった。WSGIではヘッダデータを文字列として扱っている。
細かく見ていくと色々深そうだけど「こういうモノ」として記憶しておいても問題なさそうなので詳細はスキップ。
WSGIに準拠したアプリケーションサーバーはいくつもある
uWSGIやGunicornだけがWSGIに準拠しているわけではないらしい。
- uWSGI
- Gunicorn
- mod_wsgi
- mod_python
- isapi-wsgi
- PyISAPIe
- NGINX Unit
でもググって出てくるのは大概『uWSGI』『Gunicorn』なのでこの2つの違いをまとめてみます。
uWSGIとGunicornの大きな違い
一番の違いは【出来る事の多さ】の様です。
- Gunicorn = シンプルかつ必要十分な機能を持つ
- uWSGI = 多機能でRudyやPHPなどにも使える汎用性を持つ(その分設定パラメータも多い)
Gunicornは起動や設定がシンプルで扱い易いようです。
一方、uWSGIはとにかく多機能。httpsや専用のuwsgiプロトコルも使えスプーラ機能もある。
uWSGIとGunicornの速度の違い
シンプルである分だけGunicornの方が早いと思っていたのですが、uWSGIの方が早いようです。
早くて多機能だったらuWSGIを使いますよね。
WEB上の記事が多いわけです。
まとめ
参考書は横に置いてuWSGIで設定した方が良さそうですね。
uWSGIはパラメーターが120以上あるそうです。
理解するのはなかなか遠そうです。
-
前の記事
【Python】django-admin が動かない!そんな時に見る場所はココ 2020.11.09
-
次の記事
【Docker】画面表示しない時に見る場所『Python×Django×Nginx×MySQL』 2020.11.11
コメントを残す