com.dogpile
يتكون Dogpile من نظامين فرعيين، أحدهما مبني فوق الآخر.
يوفر dogpile
مفهوم "قفل dogpile"، وهو هيكل تحكم يسمح بتحديد خيط تنفيذ واحد باعتباره "منشئ" بعض الموارد، مع السماح لخيوط التنفيذ الأخرى بالإشارة إلى الإصدار السابق من هذا المورد باسم عائدات الخلق. إذا لم يكن هناك إصدار سابق، فسيتم حظر هذه المواضيع حتى يتوفر الكائن.
dogpile.cache
عبارة عن واجهة برمجة تطبيقات للتخزين المؤقت توفر واجهة عامة للتخزين المؤقت للواجهات الخلفية من أي نوع، بالإضافة إلى أنها توفر خطافات API التي تدمج واجهات التخزين المؤقت الخلفية هذه مع آلية القفل الخاصة بـ dogpile
.
بشكل عام، تم تصميم dogpile.cache كبديل لنظام التخزين المؤقت لـ Beaker، والذي تمت كتابة الأجزاء الداخلية منه بواسطة نفس المؤلف. تمت إعادة تنفيذ جميع أفكار Beaker التي "تعمل" في dogpile.cache بطريقة أكثر كفاءة وإيجازًا، وتم نقل جميع الأفكار الأساسية (تمت كتابة الأجزاء الداخلية لـ Beaker لأول مرة في عام 2005) إلى كومة المهملات.
التوثيق
راجع وثائق dogpile.cache الكاملة على وثائق dogpile.cache. توفر الأقسام أدناه ملخصًا موجزًا لحزم dogpile
.
سمات
- واجهة برمجة تطبيقات موجزة تشجع التكوين المسبق لـ "المناطق" المحددة مسبقًا، حيث تحدد كل واحدة منها مجموعة من خصائص التخزين المؤقت بما في ذلك الواجهة الخلفية للتخزين وخيارات التكوين ووقت انتهاء الصلاحية الافتراضي.
- يتم توفير واجهة برمجة تطبيقات get/set/delete القياسية بالإضافة إلى واجهة برمجة تطبيقات تزيين الوظائف.
- آليات توليد المفاتيح قابلة للتخصيص بالكامل. تتميز واجهة برمجة التطبيقات الخاصة بديكور الوظائف بوجود "مولد مفاتيح" قابل للتوصيل لتخصيص كيفية إنشاء مفاتيح ذاكرة التخزين المؤقت لتتوافق مع استدعاءات الوظائف، كما توفر ميزة "مدير المفاتيح" الاختيارية إمكانية تعديل المفاتيح القابلة للتوصيل (مثل التشفير وتجزئة SHA-1) حسب الرغبة لكل منطقة.
- تم تطوير قفل Dogpile لأول مرة باعتباره المحرك الأساسي لنظام التخزين المؤقت لـ Beaker، وقد تم هنا تبسيطه وتحسينه واختباره بشكل أفضل. تم إصلاح بعض مشكلات الأداء الرئيسية التي كانت جوهرية في بنية Beaker، خاصة تلك القيم التي غالبًا ما يتم "جلبها بشكل مزدوج" من ذاكرة التخزين المؤقت.
- تنفذ الواجهات الخلفية نسختها الخاصة من القفل "الموزع"، حيث يتطابق "التوزيع" مع نظام تخزين الواجهة الخلفية. على سبيل المثال، تسمح واجهات memcached الخلفية لجميع العملاء بتنسيق إنشاء القيم باستخدام memcached نفسها. تستخدم الواجهة الخلفية لملف dbm ملف قفل بجانب ملف dbm. يمكن للواجهات الخلفية الجديدة، مثل الواجهة الخلفية المستندة إلى Redis، توفير آلية القفل الخاصة بها المناسبة لمحرك التخزين.
- إن كتابة واجهات خلفية جديدة أو اختراق الواجهات الخلفية الموجودة هو أمر روتيني - كل ما هو مطلوب هو طرق الحصول/الضبط/الحذف الأساسية. يعد القفل الموزع المصمم خصيصًا للواجهة الخلفية إضافة اختيارية، وإلا فإن Dogpile يستخدم كائن مزامنة الخيط العادي. يمكن تسجيل الواجهات الخلفية الجديدة في dogpile.cache مباشرة أو إتاحتها عبر نقاط دخول setuptools.
- تتميز الواجهات الخلفية المضمنة بثلاث واجهات خلفية memcached (python-memcached، وpylibmc، وbmemcached)، وواجهة Redis الخلفية، وواجهة خلفية تعتمد على Anydbm الخاص بـ Python، وواجهة خلفية بسيطة للقاموس.
- مساحة للمكونات الإضافية التابعة لجهات خارجية، بما في ذلك تلك التي توفر محرك dogpile.cache لقوالب Mako.
مشروع SQLAlchemy
يعد Dogpile جزءًا من مشروع SQLAlchemy ويلتزم بنفس المعايير والاتفاقيات مثل المشروع الأساسي.
التطوير / الإبلاغ عن الأخطاء / طلبات السحب
يرجى الرجوع إلى دليل مجتمع SQLAlchemy للحصول على إرشادات حول البرمجة والمشاركة في هذا المشروع.
مدونة لقواعد السلوك
قبل كل شيء، تركز SQLAlchemy بشكل كبير على التواصل المهذب والمدروس والبناء بين المستخدمين والمطورين. يرجى الاطلاع على قواعد السلوك الحالية لدينا في مدونة قواعد السلوك.
رخصة
يتم توزيع Dogpile بموجب ترخيص MIT.