通过这样,后台其他程序就可以直接通过django与数据库打交道,处理日志的守护进程也是这么做的,但随着运行时间的加长,我发现进程所占用的内存越来越大. 内存泄漏~! 我的程序逻辑并不复杂,唯一有内存泄漏的可能也就是不断重复执行的一个循环,几行代码,但我看了好久也没发现有问题的地方. 而且python的内存管理机制相当自动化,极少有出现内存无法释放的问题,常见的range(n)和交叉引用导致的内存不回收的情况,代码中并没有采用. 这让我十分疑惑
  
  
   只能硬着头皮调试,几行代码,我就没用啥高级的调试方法,直接一行行的注释掉来观察,最后发现是django的数据库API导致的.如
  
  
   在p.save(),把数据插入数据库后,这一部分的内存就不会释放了,加上del p 或者p = None都无济于事. 搜来搜去也没发现其他人有遇到类似的问题,幸福的是最后我还是在一篇e文中找到了点线索
  
  
   原文地址:
   
    http://blog.webfaction.com/tips-to-keep-your-django-mod-python-memory-usage-down
   
  
  
   文中第一条就提到:Make sure that you set DEBUG to False in settings.py,在DEBUG模式下,所有的SQL查询都会被保存在内存中.
   
   我顿时想起,由于我整个项目还在调试阶段,这个DEBUG变量是设置为True的
  
  
   DEBUG设置为False后,内存泄漏的问题就不复存在了
  
  
   可我整个项目还需要调试,不能就这么简单的关闭DEBUG模式,怎么办? 我一开始想在后台模块import settings后再重新设置DEBUG变量
  
  转自:http://www.igigo.net/archives/66 IGI's Blog  RSS 订阅Django"内存泄漏"的问题作者: igi 日期: 2010/03/04发表评论 (4)查看评论 这几天一直在忙着赶项目,一个基于django的日志分析系统,之前已经有基本的雏形,这一次主要是给它做代码的整理及重构部分模块.为了...
  
   1、DEBUG模式
新建一个项目,默认在setting.py中开启了DEBUG模式,如下:
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
ALLOWED_HOSTS = []
开启DEBUG模式有什么好处:
1、以后修改了
   
    Django
   
   项目的代码,然后CTR + s ,那么
   
    Django
   
   ...
  
  
   早在一年以前,自己写的一个程序部署在公司的服务器上长期运行,后来发现这台机器
   
    内存
   
   经常被这个进程占光,于是怀疑是python
   
    内存
   
   回收的
   
    问题
   
   。
最近两天,这个
   
    问题
   
   又冒了出来,因为业务的发展,项目中需要的脚本程序越来越多,所以这个
   
    问题
   
   必须解决,于是花了两周的时间一直在排查,而网上也有很多文章描述python占用
   
    内存
   
   不回收的
   
    问题
   
   。
终于在今天网上搜到一篇文章介绍
   
    django
   
   引起
   
    内存
   
   
    泄漏
   
   的
   
    问题
   
   http
  
  
   一、python有自动垃圾回收机制(当对象的引用计数为零时解释器会自动释放
   
    内存
   
   ),出现
   
    内存
   
   泄露的场景一般是扩展库
   
    内存
   
   泄露或者循环引用(还有一种是全局容器里的对象没有删除)
前者无需讨论,后者举例如下(Obj('B')和Obj('C')的
   
    内存
   
   没有回收)(貌似循环引用的
   
    内存
   
   ,Python解释器也会自己回收(标记-清除垃圾收集机制),只是时间早晚的
   
    问题
   
   ,也就是说我们在编码中不需要耗费精力去刻意避免
  
  
   记一次
   
    Django
   
   缓存优化过程
    系统中需要运行一个脚本,脚本中通过项目配置,会调用
   
    Django
   
   的model,而且脚本中是一个轮询机制,会不断的查库操作,公司内部监控平台爆出服务器
   
    内存
   
   占用过高,排查到该脚本。
   
    内存
   
   无法释放,持续增长
分析
   
    内存
   
   工具,tracemalloc 工具包;
import tracemalloc class Ticker(object): 	def __init__(self): 		pass 	def run(self): 		""""逻辑
  
  
   项目中用到了数据这块用到了,python 其中就用了
   
    Django
   
   搭建了一个管理平台,还有就是一些数据接口。但是运行了一段时间项目老是挂,然后重启后访问一会,又会挂掉。检查日志发现是Cannot allocate memory [core/master_utils.c line 740,无法分配
   
    内存
   
   。最终发现原来是框架没有关闭调试模式造成的
关闭调试模式,找到项目的settings.py文件
https://docs.
   
    django
   
   project.com/en/dev/faq/models/#why-is-
   
    django
   
   -leaking-memory
其中说明了
   
    django
   
   出现
   
    内存
   
   占用增加的原因,同时也介绍了查看被缓存query
https://docs.
   
    django
   
   project.com/en/dev/faq/models/#how-can-i-see-the-ra
  
  
   在
   
    django
   
   下使用celery作为异步任务系统,十分方便。
同时celery也提供定时任务机制,celery beat。使用celery beat 可以为我们提供 cron,schedule 形式的定时任务。
在
   
    django
   
   下使用celery beat的过程中,发现了 celery beat进程 占用
   
    内存
   
   非常大,而且一直不释放。
怀疑其有
   
    内存
   
   占用不释放的可能。
因为之前使用dja
  
  
   您好,对于您的
   
    问题
   
   ,可以通过以下步骤来解决
   
    django
   
   找不到模板
   
    问题
   
   :
1. 确认模板路径是否正确,可以在settings.py中设置TEMPLATES的DIRS参数来指定模板路径。
2. 确认模板文件名是否正确,包括大小写、后缀名等。
3. 确认模板文件是否存在,可以通过在命令行中使用ls命令或者在代码中使用os.path.exists()函数来检查。
4. 确认模板是否被正确加载,可以在视图函数中使用render()函数来加载模板。
希望以上解决方案能够帮助您解决
   
    django
   
   找不到模板
   
    问题
   
   。