私は、基本的に同じスキーマを持つ動的なデータベースと対話する集中型のdjangoアプリケーションを構築しています。これらのdbsは、いくつかのものがPHPにあるいくつかのレガシーアプリケーションでも使用されています。 db資格情報の複数のサイロを避けるためのソリューションは、この情報をそれぞれのアプリケーションの外にある一般的な設定ファイルに保存することです。設定ファイルは、djangoアプリケーションを再起動することなく、作成、変更、削除することができます。Djangoでの動的リクエストごとのデータベース接続
djangoアプリケーションへのリクエストごとに、httpヘッダまたはurlパラメータを使用して、使用するデータベース資格情報を判断するためにどの設定ファイルを推測するかを指定できます。
私の最初の考えは、設定ファイルを(場合によってはキャッシュで)解析し、各リクエストで新しい接続オブジェクトを作成し、ORMアクティビティの前にdjango.dbにパッチを当てるカスタムDjangoミドルウェアを使用することです。
この状況を処理するためのより優雅な方法がありますか?ミドルウェアのアプローチで考慮すべきスレッドセーフティの問題はありますか?
私は、問題の解析側のコストについてはあまり気にしません。そのため、キャッシングについて言及しました。推測されたdb名がまだ存在しない場合は、settings.DATABASESにさらに項目を追加するだけで、DB接続エラーで更新するのはかなり簡単です。より大きな問題は、ミドルウェアのアプローチが正しいかどうか、または要求/応答サイクルで遅すぎる場合やスレッドの安全性の問題が発生しやすい場合です。 – GDorn
ああ、いいえ、ミドルウェアはこれを行うのに適しているようです。 – SingleNegationElimination