«печать» работает только на сервере разработки. Но что, если я хочу, чтобы он работал в Apache? На тот случай, если я забуду прокомментировать это... Я хочу, чтобы все работало гладко, не вызывая ошибок.
(Просто распечатать ничего)
«печать» работает только на сервере разработки. Но что, если я хочу, чтобы он работал в Apache? На тот случай, если я забуду прокомментировать это... Я хочу, чтобы все работало гладко, не вызывая ошибок.
(Просто распечатать ничего)
Что касается quick print
, просто можно использовать:
print >>sys.stderr, 'log msg'
-- тогда, конечно же, оно попадает в error.log.
sys.stderr.write('log mgs')
.
- person FedericoCapaldo; 25.07.2017
Смотрите сообщение Грэма Дамплтона:
То, что вы предлагаете, — Плохая идея, но если вы все равно настаиваете на этом, ознакомьтесь с директивы конфигурации 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.
Если вы хотите записать операторы печати в журнал ошибок Apache, вы можете использовать sys.stderr
:
import sys
sys.stderr.write('log mgs')
тогда это будет в файле журнала ошибок apache.