Кто-нибудь знает, как читать / писать атомное логическое поле в Django? Я пытаюсь сделать следующее:
У меня есть поле в модели с именем email_sent. Всякий раз, когда я получаю уведомление о мгновенной оплате (IPN) от нашего обработчика платежей, я хочу отправить уведомление по электронной почте. Поскольку я получаю несколько уведомлений и просто хочу отправить 1 электронное письмо с квитанцией, я (пока) просто использую проверку в модели, было ли электронное письмо с квитанцией уже отправлено или нет. Однако иногда я получаю несколько IPN одновременно для одного и того же пользователя. Я не хочу отправлять несколько писем, но следующий код вводит условие гонки:
if purchase.email_sent:
self.send_email()
purchase.email_sent = True
purchase.save()
Это явно не правильный подход, но как реализовать атомарное чтение / запись в логическом поле (postgresql)? Я понимаю, что есть 2 подхода к решению этой проблемы:
1) использовать счетчик и сделать обновление ()
2) использовать атомарную операцию memcached
И 1, и 2 кажутся уродливыми взломщиками, в которых нет необходимости Какие-нибудь мысли и / или я упускаю что-то очевидное?
Спасибо!