在Django命令中以编程方式禁用DEBUG

问题描述

| 我正在使用自定义Django命令为具有大约3-4百万个数据条目(
./manage.py generate_sitemaps
)的站点生成XML站点地图。这似乎可行,但在settings.py中启用
DEBUG
时会占用过多内存。 我通常在开发过程中启用了“ 1”选项,并且经常忘记在开始创建站点地图之前将其禁用。如果发生这种情况,内存将开始填满,直到大约2-3小时后脚本崩溃。很烦人。 有没有一种方法可以暂时禁用调试设置以执行Django命令?我考虑过导入设置模块并覆盖该选项,但是我认为这不会起作用。     

解决方法

我认为您在这里有两种选择: 导入设置并抛出错误以提醒自己关闭调试。 使用
--settings=
,并将其设置为等于文件(例如gen_settings.py)的文件,专门用于您的generate_sitemaps命令,where4ѭ。然后为ѭ5创建别名 http://docs.djangoproject.com/en/dev/topics/settings/特别警告不要在运行时更改设置 我之前使用过第二个选项,并且效果很好。胜过2-3小时后的烦恼=)     ,我不确定是否可以帮助您,但是您可以尝试:
from django.conf import settings

tmp = settings.DEBUG
settings.DEBUG = False
# some your actions
# ...
# ...
settings.DEBUG = tmp
或者,您可以使用单独的设置文件并在命令行中进行设置,例如
./manage.py your_command --settings=another_settings.py
然后在another_settings.py中:
from .settings import *
DEBUG = False