我正在使用自定义Django命令为具有大约3-4百万个数据条目(./manage.py generate_sitemaps
)的站点生成XML站点地图。这似乎有效,但在settings.py中启用DEBUG
时会占用太多内存。
我通常在开发期间启用DEBUG
选项,并且在开始创建站点地图之前经常忘记禁用它。如果发生这种情况,内存将开始填满,直到脚本在大约2-3小时后崩溃。非常烦人。
有没有办法暂时禁用执行Django命令的调试设置?我想过导入设置模块并覆盖选项,但我认为这不会起作用。
答案 0 :(得分:6)
我认为你有几个选择:
导入设置并抛出错误以提醒自己关闭调试。
使用--settings=
并将其设置为等于文件(例如gen_settings.py)文件,专门用于DEBUG=False
的generate_sitemaps命令。然后为./manage.py generate_sitemaps --settings=gen_settings
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