В Django, как я могу позволить операторам печати работать с Apache WSGI? - PullRequest
5 голосов
/ 23 августа 2010

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

(просто напечатать на пустом месте)

Ответы [ 3 ]

8 голосов
/ 23 августа 2010

Что касается quick print, просто можно использовать:

print >>sys.stderr, 'log msg'

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

6 голосов
/ 23 августа 2010

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

3 голосов
/ 23 августа 2010

То, что вы предлагаете, является плохой идеей, но если вы все равно настаиваете на этом, ознакомьтесь с директивами конфигурации 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.

...