tumpukan anjing
Dogpile terdiri dari dua subsistem, satu bangunan di atas yang lain.
dogpile
memberikan konsep "kunci dogpile", sebuah struktur kontrol yang memungkinkan satu thread eksekusi dipilih sebagai "pencipta" beberapa sumber daya, sekaligus mengizinkan thread eksekusi lainnya merujuk ke versi sebelumnya dari sumber daya ini sebagai hasil penciptaan; jika tidak ada versi sebelumnya, maka thread tersebut diblokir hingga objek tersedia.
dogpile.cache
adalah API caching yang menyediakan antarmuka umum untuk backend caching dalam bentuk apa pun, dan sebagai tambahan menyediakan kait API yang mengintegrasikan backend cache ini dengan mekanisme penguncian dogpile
.
Secara keseluruhan, dogpile.cache dimaksudkan sebagai pengganti sistem caching Beaker, yang internalnya ditulis oleh penulis yang sama. Semua ide Beaker yang "berfungsi" diimplementasikan kembali di dogpile.cache dengan cara yang lebih efisien dan ringkas, dan semua cruft (internal Beaker pertama kali ditulis pada tahun 2005) dibuang ke tumpukan sampah.
Dokumentasi
Lihat dokumentasi lengkap dogpile.cache di dokumentasi dogpile.cache. Bagian di bawah ini memberikan sinopsis singkat dari paket dogpile
.
Fitur
- API ringkas yang mendorong konfigurasi awal dari "wilayah" yang telah ditentukan sebelumnya, yang masing-masing menentukan serangkaian karakteristik cache termasuk backend penyimpanan, opsi konfigurasi, dan waktu kedaluwarsa default.
- API get/set/delete standar serta API dekorator fungsi disediakan.
- Mekanisme pembuatan kunci dapat disesuaikan sepenuhnya. API penghias fungsi dilengkapi dengan "generator kunci" yang dapat dicolokkan untuk menyesuaikan cara kunci cache dibuat agar sesuai dengan pemanggilan fungsi, dan fitur "pengelola kunci" opsional menyediakan pengaturan kunci yang dapat dicolokkan (seperti pengkodean, hashing SHA-1) sesuai keinginan untuk setiap wilayah.
- Kunci dogpile, pertama kali dikembangkan sebagai mesin inti di belakang sistem caching Beaker, di sini disederhanakan, ditingkatkan, dan diuji dengan lebih baik. Beberapa masalah kinerja utama yang bersifat intrinsik pada arsitektur Beaker, khususnya nilai yang sering kali "diambil dua kali" dari cache, telah diperbaiki.
- Backend menerapkan versi kunci "terdistribusi" mereka sendiri, dengan "distribusi" yang cocok dengan sistem penyimpanan backend. Misalnya, backend memcached memungkinkan semua klien mengoordinasikan pembuatan nilai menggunakan memcached itu sendiri. Backend file dbm menggunakan file kunci di samping file dbm. Backend baru, seperti backend berbasis Redis, dapat menyediakan mekanisme pengunciannya sendiri yang sesuai dengan mesin penyimpanan.
- Menulis backend baru atau meretas backend yang sudah ada dimaksudkan sebagai tindakan rutin - yang diperlukan hanyalah metode dasar get/set/delete. Kunci terdistribusi yang disesuaikan dengan backend adalah tambahan opsional, jika tidak, dogpile menggunakan mutex thread biasa. Backend baru dapat didaftarkan ke dogpile.cache secara langsung atau tersedia melalui titik masuk setuptools.
- Backend yang disertakan memiliki tiga backend memcached (python-memcached, pylibmc, bmemcached), backend Redis, backend berdasarkan anydbm Python, dan backend kamus biasa.
- Ruang untuk plugin pihak ketiga, termasuk plugin yang menyediakan mesin dogpile.cache ke template Mako.
Proyek SQLAlkimia
Dogpile adalah bagian dari Proyek SQLAlchemy dan mematuhi standar dan konvensi yang sama dengan proyek inti.
Pengembangan / Pelaporan bug / Permintaan tarik
Silakan merujuk ke Panduan Komunitas SQLAlchemy untuk panduan pengkodean dan partisipasi dalam proyek ini.
Kode Etik
Yang terpenting, SQLAlchemy sangat menekankan komunikasi yang sopan, bijaksana, dan konstruktif antara pengguna dan pengembang. Silakan lihat Kode Etik kami saat ini di Kode Etik.
Lisensi
Dogpile didistribusikan di bawah lisensi MIT.