From bc5ae5d4574b1a0c75937e383678d532330da7a2 Mon Sep 17 00:00:00 2001 From: Randall Leeds Date: Fri, 23 Dec 2016 10:56:07 -0800 Subject: [PATCH] format boot tracebacks properly with reloader (#1415) fix #1408 --- gunicorn/util.py | 1 + gunicorn/workers/base.py | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/gunicorn/util.py b/gunicorn/util.py index 3bbb92c3..7c9f7853 100644 --- a/gunicorn/util.py +++ b/gunicorn/util.py @@ -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", [ diff --git a/gunicorn/workers/base.py b/gunicorn/workers/base.py index a2ba218f..b4f24e6a 100644 --- a/gunicorn/workers/base.py +++ b/gunicorn/workers/base.py @@ -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