問題タブ [django-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.

0 投票する
0 に答える
2532 参照

python - Djangoでは、db接続タイムアウトを設定するにはどうすればよいですか?

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/ :

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

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

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

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

0 投票する
1 に答える
930 参照

django - Django ミドルウェア、セッション、キャッシングの概要

私の Django アプリケーションの各ユーザーは部門に関連付けられており、事実上すべての要求には部門関連の処理が含まれます。したがって、アプリケーション全体で部門オブジェクトを利用できるようにしたいと考えています。

これらのうち、取るべき最も適切なアプローチはどれですか?

  1. request関連する部門を DB から取得し、オブジェクトにrequest.departmentアタッチするカスタムAuthenticationMiddlewareミドルウェアrequest.user。(たとえば、ここここを参照)
  2. ユーザーのログイン時に部門をセッションに配置し、その後 Django のrequest.sessionインターフェースを使用してビューで取得します。

私はまだ Django のキャッシング機能に慣れる機会がありませんでしたが、最終的にはユーザーごとに部門をキャッシュして、リクエストごとに余分な DB ヒットを回避したいと考えています。Django のセッションには、組み込みのキャッシング サポートが用意されているようです。また、最初のアプローチでもキャッシングを実装できると思います。

このような場合、カスタム ミドルウェア (上記の #1) よりもセッション (上記の #2) を使用する利点はありますか? ミドルウェアのアプローチは、内部 API の観点からはよりクリーンに見えますが、これはまさにセッションが設計されている種類のものであると推測しています。

ご指導ありがとうございます。

0 投票する
4 に答える
831 参照

django - django での匿名ユーザーのキャッシュ

Django 1.6 で匿名ユーザーのページをキャッシュし、許可されたユーザーにレンダリングするにはどうすればよいですか? 以前は完璧に聞こえる CACHE_MIDDLEWARE_ANONYMOUS_ONLY フラグがありましたが、削除されました。

ログインしているユーザーの名前とプロフィールへのリンクを表示するメニュー バーがすべてのページにあるため、お尋ねします。

これを行う正しい方法は何ですか?よくある問題に違いありませんが、Django のドキュメントを調べても正しい方法が見つかりませんでした。

0 投票する
1 に答える
7374 参照

django - Djangoによるredisキャッシングのdjango-redis-cacheとdjango-redisの違いは?

django キャッシュに redis を使用するための 2 つの異なるプロジェクトがあることに気付きました

https://github.com/sebleier/django-redis-cache/

https://github.com/niwibe/django-redis

どちらがよりよく知られており、標準的なパッケージですか? どれを使うか決めかねています。

0 投票する
9 に答える
94399 参照

python - Redis Python - 特定のパターンに従ってすべてのキーを削除する方法

redis キャッシングの一部を処理するための django 管理コマンドを作成しています。基本的に、特定のパターン (例: "prefix:*") に一致するすべてのキーを選択して削除する必要があります。

私はそれを行うためにcliを使用できることを知っています:

ただし、アプリ内からこれを行う必要があります。そのため、Python バインディングを使用する必要があります (私は py-redis を使用しています)。リストを削除にフィードしようとしましたが、失敗します:

# そしていま

# は 0 を返します。何も削除されません

x を反復処理できることはわかっています。

しかし、それは redis の素晴らしい速度を失い、その機能を悪用することになります。反復および/またはcliなしで、py-redisを使用したpythonicソリューションはありますか?

ありがとう!

0 投票する
1 に答える
2075 参照

python - スレッドの Django グローバル データ

シングルプロセスのマルチスレッドdjan​​goサーバーに共有グローバルデータオブジェクトがあります。これは頻繁に使用されますが、頻繁には計算されません。計算に時間がかかるので、結果を共有したいと思います。

この単純なデータには、django の LocalMemCache を使用するとうまくいくと思いました。奇妙なことに、1 回のページ読み込みで複数の ajax 呼び出しに対して機能するように見えますが、何らかの理由で、ブラウザーでページをリロードすると、キャッシュが再び空になります。

私は何を間違っていますか?

より良い方法はありますか?スレッドロックで書き込みアクセスを制御すると、グローバル変数は同じくらい効率的でしょうか?

基本的に私がやっていることは次のとおりです。

編集

問題の根本的な原因は、アクセス制御リスト (ここではコードの一部ではありません) に基づいてデータを取得することでした。アクセス制御リストは、要求の種類 (GET、POST) などによって異なります。計算すると、これは 1 セットの POST 要求でした。アクセスし、それを読み取るときは、別のアクセス セットを持つ GET 要求であり、別の (そして無効な) 結果セットを返していました。