format boot tracebacks properly with reloader (#1415)

fix #1408
This commit is contained in:
Randall Leeds 2016-12-23 10:56:07 -08:00 committed by GitHub
parent 4933aedede
commit bc5ae5d457
2 changed files with 5 additions and 2 deletions

View File

@ -561,6 +561,7 @@ def warn(msg):
def make_fail_app(msg): def make_fail_app(msg):
msg = to_bytestring(msg)
def app(environ, start_response): def app(environ, start_response):
start_response("500 Internal Server Error", [ start_response("500 Internal Server Error", [

View File

@ -12,6 +12,7 @@ import sys
import time import time
import traceback import traceback
from gunicorn import six
from gunicorn import util from gunicorn import util
from gunicorn.workers.workertmp import WorkerTmp from gunicorn.workers.workertmp import WorkerTmp
from gunicorn.reloader import preferred_reloader, Reloader, InotifyReloader from gunicorn.reloader import preferred_reloader, Reloader, InotifyReloader
@ -155,8 +156,9 @@ class Worker(object):
exc_type, exc_val, exc_tb = sys.exc_info() exc_type, exc_val, exc_tb = sys.exc_info()
self.reloader.add_extra_file(exc_val.filename) self.reloader.add_extra_file(exc_val.filename)
tb_string = traceback.format_tb(exc_tb) tb_string = six.StringIO()
self.wsgi = util.make_fail_app(tb_string) traceback.print_tb(exc_tb, file=tb_string)
self.wsgi = util.make_fail_app(tb_string.getvalue())
finally: finally:
del exc_tb del exc_tb