Djangoは同期Webフレームワークであり、デフォルトのWebサーバは遅く、安全ではなく、最悪です。 Webサーバの実装に関するDjangoのドキュメントを見ると、詳細は明らかにならない:「軽量」であり、Djangoチームは本番環境での使用を推奨していると言われている。 Stackoverflowを検索すると、単一のリクエストは、最初のリクエストが完了するまで別のリクエストがハングアップすることがわかります。デフォルトのDjango httpサーバでの不思議な振る舞い
しかし、ここで驚いたのは私が遭遇したことです。サーバーを10秒間スリープさせる要求(長時間実行するI/Oをシミュレートする)とインデックスページをロードする同時の要求他の要求が処理されている間は、索引ページを即座にロードできます。
単一のGunicornワーカープロセスでNGINX/Gunicornの背後で実行されている構成で試した場合、最初の要求(10秒間のスリープ)が完了するまでインデックスページの読み込みが停止することがわかります。この動作は、GunicornがNGINXなしで実行される3番目のテストで反映されます。これは私が期待している動作ですが、デフォルトのサーバとはまったく異なります!
どうしてですか? DjangoのデフォルトWebサーバーの裏で何が起こっていますか?