想象一个相当复杂的 Django 应用程序,它同时包含前端和后端部分。一些用户在前端部分修改了一些数据。一些脚本会在后端定期修改相同的数据。
例子:
instance = SomeModel.objects.get(...)
# (long-running part where various fields are changed, takes from 3 to 20 seconds)
instance.field = 123
instance.another_field = 'abc'
instance.save()
如果某人(或某物)在该部分更改某些字段时更改了该实例,那么更改将丢失,因为该实例最近将被保存,从 Python (Django) 类中转储数据。换句话说,如果代码中的某些内容获取数据,然后等待一段时间,然后将数据保存回来 - 那么只有最新的“保存程序”会保存其数据,所有其他(以前的)保存程序将丢失其更改。
这是一个“高负载”应用程序,数据库负载(我们使用 Postgres)非常高,我想避免任何会导致数据库活动或内存占用显着增加的事情。
另一个问题 - 我们附加了许多信号,甚至覆盖了 save() 方法,所以我想避免任何可能破坏信号或可能与自定义 save() 或 update() 方法不兼容的事情。
在这种情况下你会推荐什么?有什么特别的应用程序吗?交易?还要别的吗?
谢谢!