sql >> データベース >  >> RDS >> PostgreSQL

スレッドでDjangoORMを使用し、BoundedSemaphoreを使用してクライアントの例外が多すぎるのを回避する

    DjangoのORMは、スレッドローカル変数でデータベース接続を管理します。したがって、ORMにアクセスする各スレッドは、独自の接続を作成します。 django/db/backends/__init__.pyの最初の数行でそれを見ることができます 。

    確立されるデータベース接続の数を制限する場合は、実際にORMにアクセスするさまざまなスレッドの数を制限する必要があります。解決策は、ORM要求を専用のORMスレッドのプールに委任するサービスを実装することです。リクエストとその結果を他のスレッドとの間で送受信するには、何らかのメッセージパッシングメカニズムを実装する必要があります。これは典型的な生産者/消費者問題であるため、スレッド化に関するPythonドキュメントには、これを実現するためのヒントが記載されているはずです。

    編集: 「django接続プール」をグーグルで検索しました。 Djangoが適切な接続プールを提供していないと不満を言う人はたくさんいます。それらのいくつかは、別個のプーリングパッケージを統合することに成功しました。 PostgreSQLの場合、pgpoolミドルウェアを見てみます。




    1. androidリモートデータベース接続の問題

    2. Dateはmysqlのキーワードですか?

    3. ドロップダウン選択に基づいてテーブル内のJSPでデータをフェッチする方法

    4. CSVをインポートして、テーブルの1つの列のみを更新します