المعاملات والتزامنTransactions and concurrency
كيف نمنع حالات السباق في المهل والأمانات والمزامنة.
القواعد
- كل طلب Frappe معاملة واحدة؛ الإرسال الخارجي بعد الالتزام (
frappe.enqueue(..., enqueue_after_commit=True)). - الأمانات: قفل صف رصيد الملف قبل الصرف قيود الأمانات والتسوية الثلاثية.
- المهل: إعادة الحساب بقفل السجل، ومهمة واحدة لكل مهلة.
- التعديل من الجوال: رقم نسخة السجل
row_versionو409عند الاختلاف المزامنة دون اتصال. - Frappe يتحقق من
modifiedعند الحفظ من الواجهة (تعارض الحفظ المتزامن). - المهام المجدولة: قفل باسم المهمة في Redis لمنع التشغيل المتوازي.