我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