wsgi e instruções de impressão em python

4

Tomei conhecimento de que as instruções de impressão no meu aplicativo django estão causando erro e falha no wsgi. Sem passar por todo o meu código e remover / comentar as instruções de impressão, existe uma maneira de desativá-las ao executar o wsgi. Precisa ser o mais simples possível.

Obrigado

    
por Designer023 24.02.2011 / 10:11

2 respostas

7

Use a opção WSGIRestrictStdout:

WSGIRestrictStdout Off

ou substitua sys.stdout por sys.stderr no script estrela do Django WSGI:

import sys
sys.stdout = sys.stderr

Escrevendo para saída padrão

No WSGI application component which claims to be portable should write to standard output. That is, an application should not use the Python print statement without directing output to some alternate stream. An application should also not write directly to sys.stdout.

    
por 24.02.2011 / 10:28
2

Em geral, é melhor usar o registro para qualquer tipo de saída de depuração em um aplicativo da web e nunca usar instruções de impressão. Ou use-os no formulário:

print >> environ['wsgi.errors'], "message to be printed"

É melhor se livrar de sys.stdout, tornando-se uma cópia do sys.stderr apenas no caso.

Se você desenvolver em um servidor UNIX, você pode ter duas janelas de terminal abertas, uma para executar o Django e a segunda para fazer

tail -f loggingfile

E você obtém praticamente o mesmo efeito do uso de instruções de impressão, mas pode usar o módulo logging padrão para gerar a saída e, no aplicativo de produção, basta alterar a configuração do filtro para não exibir mensagens no nível DEBUG.

    
por 24.02.2011 / 10:49