2

OK、それほど単純ではないことはわかっています。私のsettings.pyで2つのdb接続が定義されています:defaultcache. DatabaseCacheのバックエンドを使用していdjango.core.cacheます。モデルとキャッシュに別々のデータベース/スキーマ/テーブルを使用できるように、データベース ルーターを定義しました。完全!

現在、キャッシュ DB が利用できない場合があり、次の 2 つのケースがあります。

  1. DB がクラッシュしたとき、データベースへの接続はすでに確立されていました - これは簡単です - 私はこのレシピを使用できます: http://code.activestate.com/recipes/576780-timeout-for-nearly-any-callable/ :

    try:
        timelimited(TIMEOUT, self._meta.cache.get, cache_key))
    expect TimeLimitExprired:
        # live without cache
    
  2. データベースへの接続がまだ確立されていないためtimelimited、実際にデータベース接続を確立するコードの一部をラップする必要があります。しかし、そのようなコードがどこに存在し、それを選択的にラップする方法がわかりません(つまり、接続のみをラップし、タイムアウトなしでcache接続を残します)default

ポイント2のやり方を知っていますか?

この回答https://stackoverflow.com/a/1084571/940208は正しくないことに注意してください。

grep -R "connect_timeout" /usr/local/lib/python2.7/dist-packages/django/db

結果が得られず、cx_Oracle ドライバーは、私の知る限り、このパラメーターをサポートしていません。

4

0 に答える 0