Python最后处理cgi/fastDjango要多长时间?

2024-04-18 02:57:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在Django的一个网站上工作,使用一个自动安装程序和一个自定义模板系统设置FCGI。在

正如我现在设置的,每个视图都是一个类的实例,它在加载时绑定到模板文件,而不是在执行时绑定到模板文件。也就是说,类通过修饰符绑定到模板:

@include("page/page.xtag")                    # bind template to view class
class Page (Base):          
    def main(self):                           # main end-point to retrieve web page    
        blah = get_some_stuff()
        return self.template.main(data=blah)  # evaluates template using some data

我注意到的一点是,由于FCGI不会创建新进程并在每次请求时重新加载所有模块/类,所以在我强制重新启动(即编辑/保存python文件)之前,对模板的更改不会自动出现在网站上。在

网页还包含大量存储在文件系统中的.txt文件中的数据。例如,我将从不同的文件加载大的代码片段,而不是将它们放在模板中(它们会把它们弄得一团糟)或数据库中(在那里编辑它们很不方便)。知道这个过程是持久的,我创建了一个即席memcache,方法是将加载到静态字典中的文本保存在我的一个类中:

^{pr2}$

这大大加快了速度,因为我从文件系统一个接一个地加载的二十多个代码片段现在直接从进程的内存中获取。每次我强制重新启动时,对于一个请求它都会很慢,而缓存已满,然后又会变得很快。在

我的问题是,究竟是什么决定了进程如何/何时重新启动,类和模块被重新加载,以及我在静态字典中保存的数据被清除?它依赖于我安装的Python、Django、Apache或FastCGI吗?它是确定性的、基于时间的、基于请求数的、加载的还是伪随机的?做这种内存缓存是否安全(这真的非常简单和方便!),还是应该研究一些适当的方法来缓存这些文件读取?在


Tags: 文件todjangoself模板data进程网站
2条回答

听起来你已经知道了。在

  1. 编辑Python文件时。在
  2. 重新启动服务器时。在
  3. 当出现不可恢复的错误时。 也被称为“只有在必要的时候”。在

像这样的缓存是很好的,当你在变量中存储任何内容时,你都可以这样做。既然信息是只读的,这怎么可能不安全呢?最坏的情况是在服务器重新启动后,你可能会写不好页面。在

有一个简单的方法来确认所有这些日志记录。当您的装饰器被调用时,让他们进行日志记录,当您必须从磁盘加载一个文件时记录。在

相关问题 更多 >