Мне стало известно, что операторы печати в моем приложении django вызывают ошибку и сбой wsgi. Не просматривая весь мой код и не удаляя / не комментируя операторы печати, есть ли способ отключить их при запуске wsgi. Он должен быть максимально простым.
Спасибо
Используйте параметр WSGIRestrictStdout:
WSGIRestrictStdout Off
или замените sys.stdout на sys.stderr в звездном скрипте Django WSGI:
import sys
sys.stdout = sys.stderr
Ни один компонент приложения WSGI, претендующий на переносимость, не должен выполнять запись в стандартный вывод. То есть приложение не должно использовать оператор печати Python без направления вывода в какой-либо альтернативный поток. Приложение также не должно писать напрямую в sys.stdout.
В общем, лучше использовать ведение журнала для любого вида вывода отладки в веб-приложении и никогда не использовать операторы печати вообще. Или используйте их в виде:
print >> environ['wsgi.errors'], "message to be printed"
Лучше всего избавиться от sys.stdout, на всякий случай сделав его копией sys.stderr.
Если вы разрабатываете на сервере UNIX, у вас могут быть открыты два окна терминала, одно для запуска Django, а второе для выполнения
tail -f loggingfile
И вы получаете почти тот же эффект, что и при использовании операторов печати, но вы можете использовать стандартный logging
модуль для генерации вывода, а в производственном приложении вы просто измените настройку фильтра, чтобы не отображать сообщения уровня DEBUG.