Программно отключить DEBUG в команде Django - PullRequest
2 голосов
/ 14 апреля 2011

Я использую пользовательскую команду Django для генерации карт сайта XML для сайта с примерно 3-4 миллионами записей данных (./manage.py generate_sitemaps). Кажется, это работает, но слишком много памяти, если в файле settings.py включен DEBUG.

У меня обычно включена опция DEBUG во время разработки, и я часто забываю отключить ее перед началом создания карты сайта. Если это происходит, память начинает заполняться до тех пор, пока сценарий не завершится примерно через 2-3 часа. Очень раздражает.

Есть ли способ временно отключить параметр отладки для выполнения команды Django? Я думал об импорте модуля настроек и переопределении опции, но я не думаю, что это сработает.

Ответы [ 2 ]

6 голосов
/ 14 апреля 2011

Я думаю, у вас есть несколько вариантов здесь:

  1. Импортируйте настройки и выдавайте ошибку, чтобы напомнить себе о необходимости выключить отладку.

  2. Используйте --settings= и установите его равным файлу (например, gen_settings.py) специально для вашей команды generate_sitemaps, где DEBUG=False. Затем создайте псевдоним для ./manage.py generate_sitemaps --settings=gen_settings

http://docs.djangoproject.com/en/dev/topics/settings/ предупреждает специально, чтобы не изменять настройки во время выполнения

Я использовал второй вариант раньше, и он работал довольно хорошо. Лучше, чем раздражаться через 2-3 часа =)

1 голос
/ 14 апреля 2011

Я не совсем уверен, что это поможет вам, но вы можете попробовать:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...