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):
msg = to_bytestring(msg)
def app(environ, start_response):
start_response("500 Internal Server Error", [

View File

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