stdoutログが切り捨てられないように停止する(heroku-localを使用)

stdoutログが切り捨てられないように停止する(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
    レスポンス= 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

関連情報