最初に 'はい'で始まり、このトピックをチェックして調べましたが、私の質問に明確な答えが得られるものは何も見つかりませんでしたか?私はDjagnoの初心者で、テンプレートのタグのレンダリング方法についてのスレッドの安全性の考慮についてのドキュメントを勉強しています。ここには、文書Linkへのリンクがあります。私の質問には、が記載されています。ノードが解析されると、そのノードのレンダリングメソッドが複数回呼び出される可能性があります同じ文書内のテンプレートタグの使用について、サーバ上のユーザのシングルインスタンスレベルでまたは世界中のすべてのユーザから複数の要求にテンプレートタグを使用すると、メモリ内の同じdjangoインスタンスを共有していますか?その後者の場合、新しいユーザーリクエストごとにサーバーレベルで新しいインスタンスを作成し、メモリ内のすべてのユーザーに別々のリソースを割り当てるか、これについて間違っていますか?Djangoスレッディング構造
0
A
答えて
0
後者です。
通常、WSGIサーバーは多くの永続プロセスを実行し、各プロセスでは多数のスレッドを実行します。いくつかの自動スケーリングを適用することができますが、プロセスとスレッドの数はほぼ一定であり、Djangoが処理できる並行要求の数を決定します。各リクエストが新しいCGIプロセスを作成する時代はもうなくなり、ほとんどの場合、永続プロセスがはるかに効率的です。
各プロセスには独自のメモリがあり、プロセス間の通信は通常データベースやキャッシュなどで処理されます。メモリを介して直接通信することはできません。
プロセス内の各スレッドは同じメモリを共有します。これは、局所スコープでない(例えば、関数内でのみ定義された)オブジェクトは、他のスレッドからアクセス可能であることを意味する。キャッシュされたテンプレートローダーは、各テンプレートをプロセスごとに1回解析し、各スレッドは同じ解析済みノードを使用します。これは、たとえば、 self.foo = 'bar'
を1つのスレッドに入れると、self.foo
にアクセスすると、各スレッドは'bar'
を読み込みます。同時に複数のスレッドが実行されるので、これはすぐにデバッグすることが不可能な大きな混乱になり、スレッドの安全性が非常に重要になります。
ドキュメントには、self
にデータを保存していないが、context.render_context
にデータを保存していれば、問題ありません。
関連する問題
- 1. スレッディング構造
- 2. デザインヘルプ:構造内のスレッディング
- 3. Djangoのモデルの構造
- 4. djangoのファイル構造を好む
- 5. Djangoと 'virtualenv' - 適切なプロジェクト構造
- 6. 展開Djangoプロジェクト:フォルダ/プロジェクト構造
- 7. 'テストユーザー'を許可するDjangoモデル構造
- 8. 私のプロジェクトのDjangoモデル構造
- 9. Djangoでデータベース構造を設計する
- 10. djangoモデルの正しい構造
- 11. は、Djangoの静的な構造
- 12. djangoモデルでツリー構造を作る?
- 13. Djangoのサーバー構造と規約
- 14. Javaスタイルのファイル構造のDjangoモデル
- 15. Django:任意のフィールドタイプを許可する構造Djangoモデル
- 16. django再利用可能なアプリケーションとdjangoプロジェクトの構造
- 17. JNA構造内の構造
- 18. 構造内のシャッフリング構造
- 19. ツリーデータ構造のデータベース構造
- 20. C構造体内の構造体内部の構造体
- 21. iOS CFデータ構造とNSデータ構造
- 22. 私のスイッチ構造dosent(JavaScriptコントロール構造)
- 23. 階層構造を表すデータ構造
- 24. sizeof構造体内構造体
- 25. アプリケーションのクラス構造とデータベース構造
- 26. C++の構造体内の構造体
- 27. 構造体変数と構造体メンバ
- 28. ActionScript 3のパッケージ構造とディレクトリ構造
- 29. 構造と一定の構造
- 30. 構造体の配列 - 構造体?
まずは** Thanks Man **。あなたの答えからの私の認識がここにあります。基本的に、サーバーはすべての着信要求に対して1つのプロセスを作成し、プロセスのグローバルリソースを共有するいくつかの固定数のスレッドが維持されます。だから**スレッドセーフティが必要です**。 –
かなり、はい。ビジー状態のサイトがある場合は、複数のスレッドを持つ複数のプロセスを使用しますが、それ以外のスレッドは存在しません。 – knbk