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

时间:2011-04-14 09:31:52

标签: django memory-management

我正在使用自定义Django命令为具有大约3-4百万个数据条目(./manage.py generate_sitemaps)的站点生成XML站点地图。这似乎有效,但在settings.py中启用DEBUG时会占用太多内存。

我通常在开发期间启用DEBUG选项,并且在开始创建站点地图之前经常忘记禁用它。如果发生这种情况,内存将开始填满,直到脚本在大约2-3小时后崩溃。非常烦人。

有没有办法暂时禁用执行Django命令的调试设置?我想过导入设置模块并覆盖选项,但我认为这不会起作用。

2 个答案:

答案 0 :(得分:6)

我认为你有几个选择:

  1. 导入设置并抛出错误以提醒自己关闭调试。

  2. 使用--settings=并将其设置为等于文件(例如gen_settings.py)文件,专门用于DEBUG=False的generate_sitemaps命令。然后为./manage.py generate_sitemaps --settings=gen_settings

  3. 创建别名

    http://docs.djangoproject.com/en/dev/topics/settings/专门警告不要在运行时更改设置

    之前我使用过第二个选项,效果相当不错。比2-3小时后生气更好=)

答案 1 :(得分:1)

我不确定它会对你有所帮助,但你可以尝试:

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

在那另一个_settings.py:

from .settings import *
DEBUG = False