5

複数のデータベースを含むdjangoアプリを使用しています-複数のデータベースを動的に追加しました。新しいクライアントがサインアップするたびに、新しいデータベースが提供されます。設定ファイルはこれらを動的に読み込むことができます (たとえば、サーバー上でシェル スクリプトを実行すると、コードを変更せずにデータベース定義が更新されます。方法が本当に気になる場合は、私にメッセージを送信してください)。 、新しいデータベースを認識させるためだけに uwsgi をバンプする必要があります。

django に強制的に設定をリロードさせるか、設定キャッシュを無効にすることに関するアドバイスはありますか? コマンドラインなどからでもかまいません。過去に半分は機能していたので、現時点 import settings では from ではなくを使用django.conf import settingsしていますが、簡単に元に戻すことができます。

ありがとう!

ps - 答えが「ダミー、動的複数データベースを使用しないでください」である場合、それも問題ありません;)

4

1 に答える 1

1

初めに。複数のデータベース DO から辞任できる場合、データベースのリストが固定されている場合にのみ、Django はこれをうまくサポートします。クライアントごとに個別の DB を使用できる場合は、クライアントごとに個別の wsgi プロセス (および個別の DATABASES 設定) を使用できる可能性があります。次に、新しいクライアント用に新しい wsgi プロセスを生成するだけで、設定を変更する必要はありません。

計画したとおりに実行したい場合は、次のヒントを参考にしてください。

設定を動的にリロードすることはできません。そこには非常に多くの問題があります。それらすべてと戦ったとしても、予期しない瞬間に戻ってくる可能性があり、デバッグに数時間 (数日ではないにしても) を費やすことになります。

データベース設定が一貫している場合 (つまり、すべてのクライアントで同じパスワードとユーザー)、DATABASES 変数に defaultdict を使用することを検討できます。デフォルトの辞書には工場オプションがあります。工場で次のようなものを持つことができます:

def database_configuration_factory(name):
    # check if database exists (ie. raw SQL)

    return {
        'NAME': name,
        ...
    }
于 2012-06-10T14:05:25.193 に答える