2012-05-11 2 views
1

私はジョニーのキャッシュMAN_IN_BLACKLISTJOHNNY_TABLE_BLACKLISTを知っています。 逆を指定する方法はありますか?それはキャッシュされる必要があるテーブルだけを指定していますか? アプリケーションで200を超えるテーブルがあるという簡単な理由から、私はこれをやりたいと思います。私はいくつかキャッシュして、MAN_IN_BLACKLISTが本当に巨大でないようにしたいと思います。代わりに書き込みテーブルのDjango Johnny cache - MAN_IN_BLACKLISTを使用して除外する代わりにテーブルをインクルードする?

答えて

1

おかげで、明示的に、私は主に行がblacklist_matchが含まれている、あなたがjohnny/cache.pyをハックする必要が怖いです。ジョニー・キャッシュが実際にホワイトリストをサポートするバージョン1.4のとおり

# set WHITELIST in johnny/settings.py, just as BLACKLIST 
WHITELIST = getattr(settings, 'MAN_IN_WHITELIST', 
      getattr(settings, 'JOHNNY_TABLE_WHITELIST', [])) 
WHITELIST = set(WHITELIST) 

def blacklist_match(*tables): 
    return not WHITELIST.issuperset(tables) or \ 
      bool(settings.BLACKLIST.intersection(tables)) 
+0

OK、感謝を割り当てます。私はまた、私は生の選択クエリを呼び出す場合は、django db接続/カーソルを使用して結果をキャッシュしていないように見えることがわかります。それは設計によるのですか?あるいは、これらの結果をキャッシュすることは可能ですか? – ksrini

+0

@ksriniはい、Johnny monkeyは、通常のQueryのためにsqlcompilerをパッチし、 'QuerySet.raw()'と 'db.cursor()'をラップしません。 – okm

0

:最も簡単な方法は、直接機能blacklist_matchを変更することです。 は、あなたの設定にJOHNNY_TABLE_WHITELISTを追加し、そのあなたがキャッシュされたいテーブルのリスト、例えば:

JOHNNY_TABLE_WHITELIST = ['appname_tablename', 'someotherapp_differenttable'] 

source

+0

素晴らしい!更新していただきありがとうございます。 – ksrini

関連する問題