犬山
Dogpile は 2 つのサブシステムで構成され、一方は他方の上に構築されます。
dogpile
、「ドッグパイル ロック」の概念を提供します。これは、単一の実行スレッドをリソースの「作成者」として選択できるようにすると同時に、他の実行スレッドがこのリソースの前のバージョンを参照できるようにする制御構造です。創造が進みます。以前のバージョンがない場合、オブジェクトが使用可能になるまで、それらのスレッドはブロックされます。
dogpile.cache
は、あらゆる種類のキャッシュ バックエンドへの汎用インターフェイスを提供するキャッシュ API であり、さらに、これらのキャッシュ バックエンドをdogpile
のロック メカニズムと統合する API フックも提供します。
全体として、dogpile.cache は Beaker キャッシュ システムの代替として意図されており、その内部は同じ作者によって書かれています。 Beaker の「機能する」アイデアはすべて、より効率的かつ簡潔な方法で Dogpile.cache に再実装され、不要なもの (Beaker の内部構造は 2005 年に初めて書かれた) はすべてゴミ山に追いやられました。
ドキュメント
Dogpile.cache の完全なドキュメントについては、dogpile.cache ドキュメントを参照してください。以下のセクションでは、 dogpile
パッケージの簡単な概要を説明します。
特徴
- 事前定義された「リージョン」の事前構成を促進する簡潔な API。各リージョンは、ストレージ バックエンド、構成オプション、デフォルトの有効期限などの一連のキャッシュ特性を定義します。
- 標準の get/set/delete API と関数デコレータ API が提供されます。
- キー生成の仕組みは完全にカスタマイズ可能です。関数デコレータ API は、関数呼び出しに対応するキャッシュ キーの作成方法をカスタマイズするプラグイン可能な「キー ジェネレーター」を備えており、オプションの「キー マングラー」機能は、必要に応じてキーのプラグイン可能なマングリング (エンコード、SHA-1 ハッシュなど) を提供します。地域ごとに。
- ドッグパイル ロックは、最初は Beaker キャッシュ システムの背後にあるコア エンジンとして開発されましたが、ここでは大幅に簡素化、改良され、より適切にテストされています。 Beaker のアーキテクチャに固有のいくつかの重要なパフォーマンスの問題、特に値がキャッシュから頻繁に「二重フェッチ」される問題が修正されました。
- バックエンドは独自のバージョンの「分散」ロックを実装しており、「分散」はバックエンドのストレージ システムと一致します。たとえば、memcached バックエンドを使用すると、すべてのクライアントが memcached 自体を使用して値の作成を調整できます。 dbm ファイル バックエンドは、dbm ファイルとともにロックファイルを使用します。 Redis ベースのバックエンドなどの新しいバックエンドは、ストレージ エンジンに適した独自のロック メカニズムを提供できます。
- 新しいバックエンドを作成したり、既存のバックエンドをハッキングしたりすることは日常的なことを目的としています。必要なのは、基本的な get/set/delete メソッドだけです。バックエンド向けに調整された分散ロックはオプションの追加です。それ以外の場合、ドッグパイルは通常のスレッド ミューテックスを使用します。新しいバックエンドは、dogpile.cache に直接登録することも、setuptools エントリ ポイント経由で利用できるようにすることもできます。
- 含まれるバックエンドには、3 つの memcached バックエンド (python-memcached、pylibmc、bmemcached)、Redis バックエンド、Python の anydbm に基づくバックエンド、およびプレーン辞書バックエンドが含まれます。
- Mako テンプレートに Dogpile.cache エンジンを提供するものを含む、サードパーティのプラグイン用のスペース。
SQLAlchemy プロジェクト
Dogpile は SQLAlchemy プロジェクトの一部であり、コア プロジェクトと同じ標準と規約に準拠しています。
開発 / バグ報告 / プルリクエスト
このプロジェクトのコーディングと参加に関するガイドラインについては、SQLAlchemy コミュニティ ガイドを参照してください。
行動規範
何よりも SQLAlchemy は、ユーザーと開発者間の礼儀正しく、思慮深く、建設的なコミュニケーションを重視しています。当社の現在の行動規範については、「行動規範」をご覧ください。
ライセンス
Dogpile は MIT ライセンスに基づいて配布されています。