Так что это не обязательно вопрос Django, у меня есть только ментальный блок, который ломает голову над логикой, но я полагаю, что Django может предоставить некоторые способы ручной блокировки записей, которые были бы полезны.Предотвращение условия гонки, когда многие запросы могут одновременно запускать вызов, который должен запускаться только один раз
По существу, пользователь может загружать по одному или нескольким файлам одновременно. Каждый файл загружается через отдельный запрос. Когда пользователь переходит на 90% -ную квоту хранилища, я бы хотел отправить им электронное письмо с уведомлением о них как таковым, но я хочу отправить только одно электронное письмо. Так что мой текущий рабочий процесс, чтобы проверить их использование, убедитесь, что они еще не были отправлены напоминания, а также:
if usage_pct >= settings.VDISK_HIGH_USAGE_THRESHOLD and disk.last_high_usage_reminder is None:
disk.last_high_usage_reminder = timezone.now()
disk.save()
vdisks_high_usage_send_notice(user)
Приведенный выше код, однако часто позволяет более чем одну электронную почту через. Поэтому моя первая мысль - как-то заблокировать запись диска, прежде чем проверять значение, а затем разблокировать его после сохранения. Возможно ли это и/или целесообразно, или есть лучший способ для этого?