浏览代码

Use traceback.format_exc() instead of traceback.print_exc(file=io)
traceback.print_exc(file=io) was used only for Python 2.3 compat

Mike Naberezny 10 年之前
父节点
当前提交
ca83b761d0
共有 4 个文件被更改,包括 8 次插入16 次删除
  1. 2 7
      supervisor/process.py
  2. 2 0
      supervisor/tests/test_process.py
  3. 2 5
      supervisor/web.py
  4. 2 4
      supervisor/xmlrpc.py

+ 2 - 7
supervisor/process.py

@@ -6,7 +6,6 @@ import traceback
 import signal
 
 from supervisor.compat import maxint
-from supervisor.compat import StringIO
 from supervisor.compat import total_ordering
 from supervisor.compat import as_bytes
 
@@ -432,9 +431,7 @@ class Subprocess(object):
         try:
             options.kill(pid, sig)
         except:
-            io = StringIO()
-            traceback.print_exc(file=io)
-            tb = io.getvalue()
+            tb = traceback.format_exc()
             msg = 'unknown problem killing %s (%s):%s' % (self.config.name,
                                                           self.pid, tb)
             options.logger.critical(msg)
@@ -471,9 +468,7 @@ class Subprocess(object):
         try:
             options.kill(self.pid, sig)
         except:
-            io = StringIO()
-            traceback.print_exc(file=io)
-            tb = io.getvalue()
+            tb = traceback.format_exc()
             msg = 'unknown problem sending sig %s (%s):%s' % (
                                 self.config.name, self.pid, tb)
             options.logger.critical(msg)

+ 2 - 0
supervisor/tests/test_process.py

@@ -784,6 +784,7 @@ class SubprocessTests(unittest.TestCase):
                          'signal SIGTERM')
         self.assertTrue(options.logger.data[1].startswith(
             'unknown problem killing test'))
+        self.assertTrue('Traceback' in options.logger.data[1])
         self.assertFalse(instance.killing)
         self.assertEqual(len(L), 2)
         event1 = L[0]
@@ -968,6 +969,7 @@ class SubprocessTests(unittest.TestCase):
             'sending test (pid 11) sig SIGWINCH')
         self.assertTrue(options.logger.data[1].startswith(
             'unknown problem sending sig test (11)'))
+        self.assertTrue('Traceback' in options.logger.data[1])
         self.assertFalse(instance.killing)
         self.assertEqual(len(L), 1)
         event = L[0]

+ 2 - 5
supervisor/web.py

@@ -6,7 +6,6 @@ import datetime
 
 import meld3
 
-from supervisor.compat import StringIO
 from supervisor.compat import urllib
 from supervisor.compat import parse_qs
 from supervisor.compat import parse_qsl
@@ -55,11 +54,9 @@ class DeferredWebProducer:
             return self.sendresponse(response)
 
         except:
-            io = StringIO()
-            traceback.print_exc(file=io)
+            tb = traceback.format_exc()
             # this should go to the main supervisor log file
-            self.request.channel.server.logger.log('Web interface error',
-                                                  io.getvalue())
+            self.request.channel.server.logger.log('Web interface error', tb)
             self.finished = True
             self.request.error(500)
 

+ 2 - 4
supervisor/xmlrpc.py

@@ -398,10 +398,8 @@ class supervisor_xmlrpc_handler(xmlrpc_handler):
                 request.done()
 
         except:
-            io = StringIO()
-            traceback.print_exc(file=io)
-            val = io.getvalue()
-            logger.critical(val)
+            tb = traceback.format_exc()
+            logger.critical(tb)
             # internal error, report as HTTP server error
             request.error(500)