每次请求视图时,django 是不是都会编译 views.py?

Posted

技术标签:

【中文标题】每次请求视图时,django 是不是都会编译 views.py?【英文标题】:Did django compile views.py everytime a view is requested?每次请求视图时,django 是否都会编译 views.py? 【发布时间】:2020-11-09 15:50:46 【问题描述】:

我正在开发一个 django 项目,在 view.py 中我需要使用一个外部类来做一些事情。 如果我声明类的引用,例如:

class = MyClass()

在views.py的顶部。每次请求视图时,django 是否都需要实例化该类?或者它对所有视图使用相同的实例(这就是我想要的)?

我想要实现的是拥有这个初始化非常慢(4-5 秒)的外部类,并在一个视图中为所有用户使用它......比如:

def myview(request):
    # ... some code ...
    output = class.doSomeStuff()
    # .................

【问题讨论】:

那个类是做什么的,你为什么不正确缓存初始化数据呢。 @iklinac 它加载和控制this 的输入和输出,这是一个意大利语情绪分析模型。当我只为这个类添加导入时,django 无法提供页面,并且 apache 的日志中没有任何活动。 【参考方案1】:

当一个python项目运行时,每个模块都会被解析一次并被缓存。

如果您在模块(您的文件)的顶层声明此类实例,您将拥有一个 YourClass 实例作为模块属性。

所以这应该没问题。

【讨论】:

以上是关于每次请求视图时,django 是不是都会编译 views.py?的主要内容,如果未能解决你的问题,请参考以下文章

Django缓存 -- 2019-08-08 20:40:04

在 XE5 中,每次我创建一个项目时,它都会重新编译所有内容

每次在Django中生成视图时更新模型

DAY85-Django框架(十五) 中间件和CSRF跨站伪装请求

Django与缓存

Heroku:每次测功机重新启动时都会丢失 Django 数据库文件