Я работаю над приложением Django, в котором есть модель с полем, которое необходимо вычислять при изменении модели. Сам расчет относительно дорог (1+ секунд), особенно если/когда это поле пересчитывается для большого набора запросов. Важно, чтобы это поле пересчитывалось сразу после изменения модели, поскольку оно определяет рабочий процесс, которому должен следовать пользователь, и значение поля передается в пользовательский интерфейс, чтобы пользователь мог его увидеть. Как минимум, необходимо гарантировать выполнение расчета после обновления или каким-либо образом указать, что расчет устарел.
Текущая реализация не представляла проблемы, поскольку ранее расчет был менее сложным/ затратный (до того, как клиент запросит изменения) заключается в следующем:
- пользователь вносит изменения в пользовательский интерфейс, и модель обновляется
- API получает изменения и применяет изменения к модели
- модель .save() переопределяется, поэтому поле вычисляется и устанавливается
В этой реализации мы также отключили менеджер набора запросов в модели, чтобы предотвратить использование . update(), чтобы гарантировать, что поле всегда пересчитывается в .save().
Мне любопытно, как другие реализовали бы что-то подобное, чтобы быть максимально эффективным и не полагаться на блокировку. сохраните, чтобы закончить.
Подробнее здесь:
https://stackoverflow.com/questions/793 ... del-change