Как в Django разрешить операторам печати работать с Apache WSGI?

«печать» работает только на сервере разработки. Но что, если я хочу, чтобы он работал в Apache? На всякий случай, если я забуду это закомментировать ... Я хочу, чтобы все шло гладко, не вызывая ошибок.

(Просто ничего не печатать)

6
задан TIMEX 22 August 2010 в 21:50
поделиться

3 ответа

Что касается быстрой печати , просто используйте:

print >>sys.stderr, 'log msg'

- - тогда он, конечно же, попадает в error.log.

8
ответ дан 8 December 2019 в 13:43
поделиться

См. Сообщение Грэма Дамплтона:

6
ответ дан 8 December 2019 в 13:43
поделиться

То, что вы предлагаете, является плохой идеей, но если вы все равно настаиваете на этом, ознакомьтесь с директивами конфигурации mod_wsgi :

WSGIRestrictStdout

Description: Enable restrictions on use of STDOUT.
Syntax:      WSGIRestrictStdout On|Off
Default:     WSGIRestrictStdout On
Context:     server config
Module:      mod_wsgi.c

Хорошо работающее приложение Python WSGI никогда не следует пытаться записать какие-либо данные непосредственно в sys.stdout или используйте напечатать заявление, не направляя его к альтернативному файловому объекту. Это из-за способов размещения WSGI такие приложения, как CGI, используют стандарт вывод как механизм отправки содержание ответа обратно на веб сервер. Если бы приложение WSGI было напрямую писать в sys.stdout это может помешать работе адаптер WSGI и в результате повреждение выходного потока.

В интересах продвижения переносимость приложений WSGI, mod_wsgi ограничивает доступ к sys.stdout и вызовет исключение если сделана попытка использовать sys.stdout явно.

Единственный раз, когда можно захотеть снять это ограничение чисто удобства использования оператор печати во время отладки приложения, или если какой-то третий партийный модуль или приложение WSGI было ошибочно использует печать, когда не должен. Если ограничения на использование sys.stdout удаляются, любые данные написанное на него будет отправлено вместо этого через sys.stderr и появится в файле журнала ошибок Apache.

3
ответ дан 8 December 2019 в 13:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: