मानक तरीका यह है कि इसे संभालना नहीं है, जैसे:
- आपके मामले में विफलता की संभावना 0 के करीब है;
- विफलता की गंभीरता बहुत कम है।
अगर, किसी कारण से, आपको यह सुनिश्चित करना है कि समस्या नहीं होगी, तो आप अपने दम पर हैं।
मैंने घटनाओं के अनुक्रम का विस्तार से विश्लेषण नहीं किया है, लेकिन मुझे लगता है कि SERIALIZABLE अलगाव स्तर का उपयोग करने से वास्तव में मदद नहीं मिलेगी, यह केवल IntegrityError
का कारण होगा। (या DatabaseError
) एक अलग जगह पर उठाया जाना।
ओवरराइडिंग Model._perform_unique_checks
मुझे एक बुरा विचार लगता है, यदि संभव हो तो आप बंदर पैचिंग से दूर रहें (और यहां यह है संभव)।
जहां तक संभावित त्रुटियों को रोकने के लिए टेबल लॉक का उपयोग करने की बात है... ठीक है, मैं बहुत बड़ा प्रशंसक नहीं हूं इसलिए मैं इसकी अनुशंसा भी नहीं कर सकता।
इसी तरह के प्रश्न का एक अच्छा उत्तर यहां दिया गया है:https://stackoverflow.com/a/3523439/176186ए> - मैं सहमत हूं कि IntegrityError
. को पकड़ना और फिर से प्रयास करना शायद समस्या से निपटने का सबसे आसान तरीका है।
संपादित करें:मुझे यह मिला:Symfony2 - फॉर्म जमा करने के बाद अद्वितीय बाधा त्रुटि से कैसे उबरें? और मैं @pid के उत्तर से सहमत हूं।