問題タブ [django-johnny-cache]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
django - Django Johnny キャッシュ - MAN_IN_BLACKLIST を使用して除外する代わりにテーブルを含めますか?
Johnny cacheMAN_IN_BLACKLIST
とJOHNNY_TABLE_BLACKLIST
. 逆を指定する方法はありますか?つまり、キャッシュする必要があるテーブルのみを指定しますか? アプリケーションに200を超えるテーブルがあり、いくつかをキャッシュしたいので、テーブルを非常に大きくしたくないという単純な理由でこれを行いたいと思いますMAN_IN_BLACKLIST
。
ありがとう、
django - Johnny Cache を SNS のようなコンテンツに変更する
ジョニー キャッシュは、読み取り専用データのテーブルや、ゲームのメタ テーブルのようにめったに更新されないデータに適しています。更新が発生した場合にターゲットテーブルのクエリキャッシュを自動的に期限切れにするテーブルレベルのバージョン管理を取得しました。
SNS のようなアプリケーションの場合、通常、UGC は user_id でシャーディングでき、キャッシュは通常ユーザーごとに行われるため、自動バージョン管理メカニズムをテーブル レベルからユーザー レベル、たとえばテーブル レベルに変更することを考えています。 、キーは概念的に次のようになります
"jc _ {テーブル名} _ {テーブル バージョン} _ {クエリ ハッシュ}"
ユーザーレベルキーの場合
"jc _ {テーブル名} _ {"テーブル + {ユーザー ID}" _ バージョン} _ {クエリ ハッシュ}"
これは、キャッシュが特定のユーザーのテーブルのビューで行われることを想像しています (「select * from table where user_id=111」のビューを、johnny-cache が動作するテーブルと見なします)。次に、統一された方法でほとんどの UGC をキャッシュするために使用できます。
すべての問題に特効薬がないことは理解していますが、この提案について、情報や推奨事項を教えていただけますか? 前もって感謝します。
django - Johnny Cacheタスクを使用したDjango Celeryが奇妙なエラーで失敗する
Django 1.4.5、Celery 3.0.15、Django Celery 3.0.11、Johnny Cache 1.4 を実行しています。
invalid literal for int() with base 10: 'a'"
セロリ タスクでの ORM の呼び出しは、次のような奇妙なエラーで失敗することがあり<MaybeEncodingError: Error sending result: ''<ExceptionInfo: ObjectDoesNotExist()>''. Reason: ''PicklingError("Can\'t pickle <class \'scsite.models.DoesNotExist\'>: attribute lookup scsite.models.DoesNotExist failed",)''.>
ます。
スタック トレースの例を次に示します。
エラーは私のコードではないと思います。何らかの理由でキャッシュが壊れているようで、次のようなことが起こります。
- pk=123 の CustomModel が取得されます。
- セロリに渡されて処理されます。
- なぜかカスタムモデルのpkが123ではなく「a」「d」のような文字になってしまいます。別の呼び出しをする
MyModel.objects.get(pk='a')
と明らかに失敗します。
実際、このコードを再検討すると、前述のように Celery にオブジェクトを渡していないように見えます。単純な Celery タスクから次のマネージャー メソッドを実行しているだけです。
私の推測では、行 1 が実行されるとキャッシュから人物が取得されますが、行 3 の処理中に行 1 で取得されたキャッシュが破損します。
django - admin で johnny-cache を無効にする
ジョニーキャッシュを使用しています。管理者から無効にする簡単な方法はありますが、他の場所では透過的に機能させますか?
私はジョニーキャッシュのドキュメントを見てきました - http://pythonhosted.org/johnny-cache/、しかしこれを見つけることができないようです。
python - Johnny キャッシュ データへのアクセス
私はPythonに比較的慣れていないので、ジョニーキャッシュによってキャッシュされた結果にアクセスして、結果を返す前にさらに処理できるかどうか疑問に思っていました。たとえば、さらにクエリを実行するなどです。
簡単な例として、テニス、フットボール、ゴルフなどのスポーツごとに分類された何十万ものスポーツ結果を含むテーブルがあるとします。一部のユーザーはフットボールとゴルフにのみ関心があるため、現時点では johnny キャッシュを使用してキャッシュします30 分間の各スポーツ カテゴリのクエリの結果。ただし、このデータをそのままユーザーに渡すことはできません。ユーザーの好みに合わせてさらにフィルタリングする必要があるためです (たとえば、特定のチーム/プレーヤーの結果のみが必要な場合など)。カテゴリとユーザー設定に対して db 呼び出しを行うのは法外なことです。そのため、すべてのリクエストのベースを形成するクエリの一部 (スポーツ カテゴリ) をキャッシュしますが、ユーザーのプリファレンス - これは Johnny Cache で行うことができますか?
django - テンプレート キャッシュを使用した Johnny Cache
Django 1.4 を使用して、テンプレート キャッシュと共に Johnny Cache をセットアップしています。現在のセットアップは次のようになります。
JOHNNY_CACHE_BACKEND は廃止されたため、johnny 設定をキャッシュ ディクショナリ内に移動する必要があります。ドキュメントによると、これは簡単に思えます。しかし、テンプレートのキャッシュはどうなるでしょうか? このように、これらの設定は互いに共存していますか?
または、johnny.backends.memcached.MemcachedCache は django.core.cache.backends.memcached.MemcachedCache の代わりになります。この場合、次のようにする必要があります。
クエリとテンプレートのキャッシュを処理します。どんな洞察も大歓迎です。
django - Johnny-cache と taggit-tags
プロジェクトに johnny-cache (1.6.1a) と Django 1.6 を使用しています。
TaggableManger を実装するモデルがあります。
johnny-cache によってキーワードが自動的に無効化されませんでした。そのため、post_save シグナルを使用してそれを行いました。
などのオブジェクト名を渡そうとしましたinvalidate('Tag')
が、うまくいきませんでした。
これは次のことを行います。
だから、これが予想される動作なのか、それとも別の方法があるのか 疑問に思っていますか?