私は、apache2.2のデーモンモードでmod_wsgiを使ってDjangoをデプロイしました。だから、Djangoがコンテンツを生成した後、そこからapacheへのすべてを渡して、最適化された栄光で役立たせるか、Djangoはまだ何とかこのサービングステップに課税されていますか?mod_wsgi(デーモン)サイトはクライアントに配信するためにコンテンツをApacheに渡しますか?
答えて
WSGIインターフェイスでは、WSGIアプリケーション(この場合はDjango)が呼び出され、内容を返す必要があると表示されます(http://www.python.org/dev/peps/pep-0333/)。
Djangoはビュー機能を呼び出しました。あなたのビュー関数は、レンダリングされたテンプレートを返しました。 Djangoはテンプレートをレンダリングした結果を返しました。そして、あなたの代わりに、それはstart_response
呼び出し可能呼び出しました。
Apacheはmod_wsgiを呼び出して別のステップを進めます。 mod_wsgi(WSGIの規則に従う)は、環境を作成し、これをDjangoに渡し、Djangoが使用できる呼び出し可能ファイルstart_response
を渡しました。
Djangoがstart_response
と呼んだとき、mod_wsgiはその応答を収集して何かをする義務がありました。 Apacheに渡してブラウザにフィードダウンします。
Djangoはかなり急いで行うことができます。しかし、Apacheは最初のページをブラウザに流し込んでしまいます。その後、ブラウザは.JSライブラリ、.CSSファイル、およびそれらのすべてのイメージを要求し始めます。理想的には、これらのフォローオン要求の残りの部分はすべてApacheが処理します。
「mod_wsgiバッファは私のためにバッファしますか?答えはバージョンによって異なります。 2.0より前のmod_wsgiはバッファを蓄積する可能性があります。 mod_wsgi 2.0以降はバッファリングしません。アプリケーションがバッファリング可能であると想定しているか、バッファリングのためにミドルウェアを含んでいます。
http://code.google.com/p/modwsgi/wiki/ChangesInVersion0200
一般的に、あなたのDjangoテンプレートは、一つのバッファにレンダリングされ、Apacheは、出力フィルタを適用し、それをブラウザにトリクルダウンするために準備ができて、1枚でのmod_wsgiに渡されます。
mod_wsgi 1.XのFWIWでは、Apacheがデフォルトで出力バッファリングを実行できるようになっていました。これは、WSGI仕様が基本的なWebサーバーによる出力バッファリングを事実上禁止するためです。これは、WSGI仕様では、イテレート/ジェネレータから返された各文字列の後にデータがブラウザにフラッシュされる必要があるからです。
つまり、出力バッファリングを有効にすることはオプションで、何よりも多くの実験でした。それはWSGIが禁止していたために削除されました。特定のApacheバージョンで誤った動作をするためにいくつかの回避策を実装する必要がある場合、実際にmod_wsgiコードが複雑になったためです。
- 1. 既存のApache/mod_wsgi/Djangoサイトにdjango-socketioを追加する
- 2. Google Androidアプリ内購入「コンテンツ配信」コンテンツを正しく配信するには?
- 3. Apache Mina UDPサーバーはクライアントにメッセージを送信します
- 4. PumaデーモンにJavaオプションを渡すには?
- 5. mod_wsgiを使用してapache上にフラスコを配置
- 6. キャッシュされたコンテンツをユーザーに配信する前にワニスからapacheを呼び出してください
- 7. カートのコンテンツをあるWebサイトから別のWebサイト、プラットフォームに依存しないソリューションに渡しますか?
- 8. ApacheでDjangoとmod_wsgiを使用している複数のサイト
- 9. asp.net Webサイトでクライアント側の値を渡すために必要なヘルプ
- 10. スウィフトメーラは、後で配信するためにキューに送信します
- 11. mod_wsgiのApacheがdjangoのデータベースに関するエラーを出力しました
- 12. mod_wsgi-expressで作成したサイトが応答に時間がかかります
- 13. クライアントがサイトに接続するためにクライアントがWebサーバー上でWebサイトをホストする方法
- 14. ファイルアップロードのためにdjango/apache/mod_wsgiのリクエストエンティティを固定しようとすると大きすぎます。
- 15. Apache PHPスクリプト(Ubuntu 14.04)からデーモンにシグナルSIGUSR1を送るには
- 16. Apache Commonsデーモン「Javaの作成に失敗しました」エラー
- 17. 完全に異なるHTTPSサイトにコンテンツを送信するHTTPSサイトのHTMLフォーム
- 18. joomla複数のサイトのコンテンツ配信
- 19. クライアントに配信されたjarファイルにH2データベースを埋め込む方法は?
- 20. Apache 2.2とPython 3.2 for Windowsでmod_wsgiをコンパイルするには?
- 21. Mac OSX LionでDjango、mod_wsgi、apacheを設定するには?
- 22. テストのために.ipaファイルをクライアントに送信する方法
- 23. データをフラグメントシェーダに渡すためのユニフォーム配列またはテクスチャ?
- 24. モデルのデータをHtmlコンテンツに渡すコントローラから返信する
- 25. 完成したWebサイトをクライアントに渡しても、サーバーのログイン資格情報は保持しますか?
- 26. 配備DjangoはリモートUbuntuサーバー上でApacheとmod_wsgiを使用しています
- 27. Apache 2 + mod_wsgi + WSGIScriptAlias
- 28. Apache + mod_wsgi interaction
- 29. Django Apache mod_wsgi 500
- 30. Anaconda + Apache + mod_wsgi + Ubuntu
はい。 WSGIサーバー、ゲートウェイ、およびミドルウェアは、ブロックの送信を遅延させてはならず、ブロックをクライアントに完全に送信するか、アプリケーションが実行されている間も送信を続行することを保証する必要があります次のブロックを作り出している」 –