停止标准输出日志被剪裁(由heroku-local)

停止标准输出日志被剪裁(由heroku-local)

heroku local运行Procfile

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

start-nginx进行一些环境设置,然后以以下内容结束:

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

目的是并行运行 nginx 和 Gunicorn,并记录所有内容。

它主要起作用。问题是Python回溯是部分的——介绍性的“Traceback”行,以及第一个(对于调试、库无用的)调用,被剪掉了,例如:

回溯(最近一次调用最后一次):
venv/lib/python3.4/site-packages/flask/app.py”,第 1820 行,在 wsgi_app 中

当直接运行正确的输出时,我所看到的就是start-nginx gunicorn ...

回溯(最近一次调用最后一次):
文件“/Users/ojf/project/venv/lib/python3.4/site-packages/flask/app.py”,第1820行,在wsgi_app中
    response = self.make_response(self.handle_exception (e))
[这里还有 25 行]
AttributeError: [有用的行]

造成这种情况的可能原因是什么?我可以通过以不同方式记录或处理 stdout|err 来修复它吗?或者这是一个错误heroku-local


我也尝试过(而不是{ 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

在脚本中,唯一的区别是heroku-local停止对输出着色。

答案1

尝试将输出设置为无缓冲:

  • 在.env文件中设置环境变量:

    PYTHONUNBUFFERED=True

  • 或使用-u标志运行:

    python -u script.py

https://docs.python.org/3/using/cmdline.html#cmdoption-u

相关内容