[2024年度版] Django CGI(5.x / 2.x 1.x )
カテゴリー: レンタルサーバーやcgi
2019-07-08
Django CGI(5.x / 1.x 2.x)
django1.x と2.xの両方で動作可能な django.cgiを作ったので速度を比較してみた。
前回とは違うアプローチをしてみたので、1個のファイルに小さく収まりました。
ベンチマークをすると CGI起動だとdjangoは 応答速度的に使えないコと判明しました。
ただし、CGIではなく常駐で運用するとレスポンスはとても速いです。
結論
原因
※ 応答速度が1秒を超えると閲覧者に遅いとストレスを感じさせてしまいます。
※ 時間は、URL呼び出し開始からデータ取得終了までにかかった時間。
※ C言語バイナリが最小時間は一番小さかった。
CGIのサイズ
執筆:2019.07.08
編集:2019.07.08
編集:2024.08.04
編集:2019.07.08
編集:2024.08.04
(2024-08-04)
PythonのバージョンとDjango を最新の5.0をインストールするとDjango 2.xのコードは そのまま動きました!
相変わらずオーバーヘッドが大きい
★ C:\Program Files\Python\3.12\Lib\site-packages\django の除外設定だけでも効果がありました。
PythonのバージョンとDjango を最新の5.0をインストールするとDjango 2.xのコードは そのまま動きました!
相変わらずオーバーヘッドが大きい
CGI版での速度 (調査日 2024年8月4日)
サーバー (apache2.4) |
django(CGI) |
ディフェンダーの設定 |
||
/admin/ hello |
||||
Windows11 (ローカルホスト) |
2.10~2.70秒 | 約1.5秒 |
(2024-07-18)
しばらく使っていない間に、The latest official version is 5.0.7.になっていますね
https://www.djangoproject.com/download/
https://docs.python.org/ja/3.12/library/cgi.html
Python cgiモジュールは、バージョン 3.11 で非推奨、バージョン 3.13 で削除予定とありますね
上記ページで3.13以降のマニュアルにするとなくなっています。
ということで、Django をCGIとして動作させる裏技は将来的に封殺されるかもしれないです。
CGIアプリケーションを作りたい場合は、Pythonは候補からはずれるということです。
格安運用でdjangoがいい場合は、共有サーバーではなく、安いVPS(仮想専用サーバー)を借りないといけないのかもしれないですね~。400円/月くらいですか?
VPSは自己管理なので面倒ですよね~
しばらく使っていない間に、The latest official version is 5.0.7.になっていますね
https://www.djangoproject.com/download/
https://docs.python.org/ja/3.12/library/cgi.html
Python cgiモジュールは、バージョン 3.11 で非推奨、バージョン 3.13 で削除予定とありますね
上記ページで3.13以降のマニュアルにするとなくなっています。
ということで、Django をCGIとして動作させる裏技は将来的に封殺されるかもしれないです。
CGIアプリケーションを作りたい場合は、Pythonは候補からはずれるということです。
格安運用でdjangoがいい場合は、共有サーバーではなく、安いVPS(仮想専用サーバー)を借りないといけないのかもしれないですね~。400円/月くらいですか?
VPSは自己管理なので面倒ですよね~
django1.x と2.xの両方で動作可能な django.cgiを作ったので速度を比較してみた。
前回とは違うアプローチをしてみたので、1個のファイルに小さく収まりました。
ベンチマークをすると CGI起動だとdjangoは 応答速度的に使えないコと判明しました。
ただし、CGIではなく常駐で運用するとレスポンスはとても速いです。
結論
djangoをCGIで動かすと何もなくても 0.5~0.6秒 レスポンスまでに時間がかかります。
djangoをCGIで運用することはお勧めできません。
mod_wsgiが使えない場合は、mod_phpなら導入されているサーバーは多いので、phpのフレームワークを検討したほうが賢明です。
djangoをCGIで運用することはお勧めできません。
mod_wsgiが使えない場合は、mod_phpなら導入されているサーバーは多いので、phpのフレームワークを検討したほうが賢明です。
原因
djangoは多数のファイルに分散されて、起動時にそれを読み込むため、CGIで動作させると とても時間がかかります。
速度比較いろいろ
django1とdjango2の速度差はそれほどなく、若干django2のほうがレスポンスが速い傾向にありました。
django
サーバー | CGI |
manage.py |
mod_wsgi |
localhost | 1.11秒 | 0.01秒 | 0.03秒 |
さくらインター ネット ライト |
1.23秒 | - | - |
※ 応答速度が1秒を超えると閲覧者に遅いとストレスを感じさせてしまいます。
CGI版での速度比較 (調査日 2019年7月7,8日)
サーバー (apache2.4) |
django1(CGI) | hello.cgi | |||||
/admin/ | hello | python | php | C言語 | GO | ||
Windows10 (ローカルホスト) |
5.86秒 | 2.64秒 | 0.30秒 | 0.25秒 | 0.02秒 | 0.06秒 | |
FreeBSD11 (イントラネット) |
1.11秒 | 0.51秒 | 0.03秒 | 0.03秒 | 0.01秒 | 0.02秒 | |
さくらインターネット ライト FreeBSD9 (インターネット) |
1.23秒 | 0.64秒 | 0.08秒 | 0.12秒 | 0.06秒 | 0.06秒 |
※ C言語バイナリが最小時間は一番小さかった。
CGIのサイズ
ファイルサイズ | hello.cgiの種類 |
1,988,354 | GO バイナリCGI |
6,604 | C言語 バイナリCGI |
140 | PHP CGIスクリプト |
115 | perl CGIスクリプト |