هل نجح أي شخص في تشغيل الاختبارات التي تعتمد على التخزين المؤقت باستخدام المكون الإضافي xdist؟ لقد قمت بإنشاء أداة تثبيت ، على غرار تركيبات قاعدة البيانات ، لإضافة بادئة مفتاح ذاكرة التخزين المؤقت: https://github.com/edx/course-discovery/blob/ad1dca5623b765c6d85d83dcf7e5f75c7b8e1181/conftest.py#L18 -L40. ومع ذلك ، لا يزال لدي بعض الاختبارات التي فشلت عند استخدام memcached (ولكن ليس عند استخدام الذاكرة المحلية).
clintonb : كان المقتطف الخاص بك يعمل بشكل لا تشوبه شائبة تقريبًا في أحد cache.clear()
تقوم بمسح جميع العناصر المخزنة مؤقتًا ، وليس فقط العناصر ذات البادئة الصحيحة ، لذلك أي كود يعتمد على القيمة المخزنة مؤقتًا في قد تفشل ذاكرة التخزين المؤقت إذا بدأ اختبار آخر أو انتهى بين وقت تعيين قيمة ذاكرة التخزين المؤقت ووقت قراءتها. من المحتمل أن تكون ذاكرة التخزين المؤقت المحلية محصنة لأن التخلص منها لن يؤثر على العمليات الأخرى.
أواجه مشكلة مشابهة (إلى حد ما) ، أقوم بإجراء اختبارات تستخدم webtest وينتهي بي الأمر بظهور خطأ CSRF 🤷♂
أي حل لتتمكن من استخدام Redis مع هذا؟
لم يعد بإمكاني الوصول إلى الريبو حيث قمت بهذا العمل ، ولكن IIRC ، redis-py توفر طريقة لحذف جميع المفاتيح ببادئة معينة وقمت باستدعاء ذلك ، أو قمت بإعادة صياغة عملية التنظيف قليلاً بحيث تم حذف المفاتيح مع الصحيح فقط اختصار.
التعليق الأكثر فائدة
clintonb : كان المقتطف الخاص بك يعمل بشكل لا تشوبه شائبة تقريبًا في أحد
cache.clear()
تقوم بمسح جميع العناصر المخزنة مؤقتًا ، وليس فقط العناصر ذات البادئة الصحيحة ، لذلك أي كود يعتمد على القيمة المخزنة مؤقتًا في قد تفشل ذاكرة التخزين المؤقت إذا بدأ اختبار آخر أو انتهى بين وقت تعيين قيمة ذاكرة التخزين المؤقت ووقت قراءتها. من المحتمل أن تكون ذاكرة التخزين المؤقت المحلية محصنة لأن التخلص منها لن يؤثر على العمليات الأخرى.