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

관련 정보