Parar o log stdout sendo cortado (por heroku-local)

1

Eu corro heroku local com o Procfile :

web: start-nginx gunicorn -c gunicorn.conf.py app:app

start-nginx faz algumas configurações do ambiente e termina com:

{ nginx --some-params & $@ ; }

a intenção é rodar ambos nginx e gunicorn lado a lado, e registrar tudo.

Funciona principalmente. O problema é que o traceback do Python é parcial - a linha introdutória "Traceback" e a primeira (inútil para depuração, biblioteca) chamada, cortada, por exemplo:

Traceback (most recent call last):
venv/lib/python3.4/site-packages/flask/app.py", line 1820, in wsgi_app

é tudo o que vejo, quando a saída correta de executar start-nginx gunicorn ... diretamente:

Traceback (most recent call last):
File "/Users/ojf/project/venv/lib/python3.4/site-packages/flask/app.py", line 1820, in wsgi_app
    response = self.make_response(self.handle_exception(e))
[25 more lines here]
AttributeError: [useful line]

Qual é a causa provável disso, e posso corrigi-lo registrando ou manipulando stdout | err de forma diferente? Ou isso é um bug em heroku-local ?

Eu também tentei (em vez de { a & b ; } ):

nohup nginx --some-params 1>/tmp/log 2>&1 & echo $! > /tmp/nginx.pid
nohup $@ 1>/tmp/log 2>&1 & echo $! > /tmp/guni.pid
tail -f /tmp/log

no script, com a única diferença sendo que heroku-local parou de colorir a saída.

    
por OJFord 30.09.2015 / 22:36

1 resposta

1

Tente definir a saída como sem buffer:

  • na variável de ambiente do conjunto de arquivos .env:

    PYTHONUNBUFFERED=True

  • ou execute com -u flag:

    python -u script.py

link

    
por 02.02.2018 / 16:18