我正在Django中寻找一种简单但推荐的方法,只在内存中存储变量.当Apache重新启动或Django开发服务器重新启动时,变量被重置回0.更具体地说,我想计算每个模型实例(数据库记录)上发生特定操作的次数,但出于性能原因,我不想将这些计数存储在数据库中.我不在乎重启服务器后计数是否消失.但只要服务器启动,我希望这些计数在Django shell和web界面之间保持一致,并且我希望能够返回在每个模型实例上执行操作的次数.

我不希望变量与用户或会话相关联,因为我可能希望在未登录的情况下返回这些计数(并且无论哪个用户登录,我都希望计数保持一致).我描述的是一个全局变量吗?如果是的话,在Django 怎么用呢?我注意到,像urls.py、settings.py和mods.py这样的文件在每次服务器启动时似乎只解析一次(相比之下,views.py似乎在每次发出请求时都会解析).这是否意味着我应该在其中一个文件中声明变量?或者我应该以某种方式将其存储在模型属性中(只要它在服务器运行期间一直存在)?这可能是一个简单的问题,但我只是不确定在Django是如何做到的.

如有任何意见或建议,我们将不胜感激. 谢谢, 乔

推荐答案

您可以声明mustn't个全局变量.如果操作正确,设置(常量)是正常的.但是变量违反了shared-nothing架构,可能会造成很多麻烦.(最好的情况是它们会不一致)

我会简单地将这些统计数据存储在缓存中.(嗯,实际上我会将它们存储在数据库中,但您明确表示这会对性能产生负面影响,所以.)

新的incr()decr()方法特别适用于计数.有关更多信息,请参见 docs.

Django相关问答推荐

查询在对象中使用django查询与一个包含句子

如何从列中捕获数据并将其添加到下拉菜单中,以便表单填充另一个表

在生成的表单元素处出现多值DictKeyError

我如何获得已循环的每个项目的名称?

如何在 Django 测试中发送带有图像字段查询参数的 POST 请求

来自 Django 应用程序的日志(log)消息未上传到 AWS CloudWatch

Django过滤器查询外键

如何使用 matplotlib 在绘图的角落插入小图像?

Django RESTful API - django-piston vs. django-tastypie

django-rest-framework 如何使模型序列化器字段成为必需

我的 django 模板布尔变量在 javascript 中没有按预期工作

何时在 django 中使用 pre_save、save、post_save?

在 Django 管理员中嵌套内联?

为用户添加自定义权限

Python 社区里的小马是怎么回事?

Django post_save 在不覆盖模型 save() 的情况下防止递归

在 Django 中使用 Cython,是否有意义?

警告:找不到分发的 svn 位置==0.6.16dev-r0

django.core.servers.basehttp.FileWrapper 在 Django 1.9 中消失

Django将整数模型字段的范围设置为约束