Cách tiêu chuẩn là KHÔNG xử lý điều này, như:
- xác suất thất bại trong trường hợp của bạn gần bằng 0;
- mức độ nghiêm trọng của sự cố là rất thấp.
Nếu, vì một lý do nào đó, bạn phải chắc chắn rằng vấn đề sẽ không xảy ra, thì bạn đang tự lo liệu.
Tôi chưa phân tích chuỗi sự kiện một cách chi tiết nhưng tôi nghĩ rằng việc sử dụng mức cô lập SERIALIZABLE sẽ không thực sự hữu ích, nó sẽ chỉ gây ra IntegrityError
(hoặc DatabaseError
) để được lớn lên ở một nơi khác.
Ghi đè Model._perform_unique_checks
đối với tôi nghe có vẻ là một ý kiến tồi, tốt hơn hết bạn nên tránh xa việc vá khỉ nếu có thể (và đây là có thể).
Đối với việc sử dụng khóa bàn để tránh những lỗi không đáng có ... Chà, tôi không phải là một fan cuồng nhiệt nên tôi cũng không thể khuyến nghị điều đó.
Đây là một câu trả lời hay cho một câu hỏi tương tự: https://stackoverflow.com/a/3523439/176186 - Tôi đồng ý rằng bắt IntegrityError
và thử lại có lẽ là cách dễ dàng nhất để giải quyết vấn đề.
CHỈNH SỬA:Tôi đã tìm thấy cái này: Symfony2 - làm cách nào để khôi phục khỏi lỗi ràng buộc duy nhất sau khi gửi biểu mẫu? và tôi đồng ý với câu trả lời của @ pid.