Python 3.x 如何消除python tornado中的所有异常

Python 3.x 如何消除python tornado中的所有异常,python-3.x,tornado,Python 3.x,Tornado,我有一个简单的龙卷风应用程序 import tornado.ioloop import tornado.web class MainHandler(tornado.web.RequestHandler): def get(self): self.write("Hello, world".s()) def make_app(): return tornado.web.Application([ (r"/", MainHandler), ]

我有一个简单的龙卷风应用程序

import tornado.ioloop
import tornado.web

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello, world".s())

def make_app():
    return tornado.web.Application([
        (r"/", MainHandler),
    ], debug=False)

if __name__ == "__main__":
    app = make_app()
    app.listen(8888)
    tornado.ioloop.IOLoop.current().start()
当然,点击
http://127.0.0.1:8888
将导致我的终端出现这样的长时间异常

ERROR:tornado.application:Uncaught exception GET / (127.0.0.1)
 HTTPServerRequest(protocol='http', host='127.0.0.1:8888', method='GET', uri='/', version='HTTP/1.1', remote_ip='127.0.0.1', headers={'Host': '127.0.0.1:8888', 'Connection': 'keep-alive', 'Cache-Control': 'max-age=0', 'Upgrade-Insecure-Requests': '1', 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 'Accept-Encoding': 'gzip, deflate, sdch, br', 'Accept-Language': 'en-US,en;q=0.8'})
Traceback (most recent call last):
  File "/Users/lib/python3.6/site- packages/tornado/web.py", line 1467, in _execute
    result = method(*self.path_args, **self.path_kwargs)
  File "test.py", line 6, in get
    self.write("Hello, world".s())
AttributeError: 'str' object has no attribute 's'
ERROR:tornado.access:500 GET / (127.0.0.1) 3.08ms
class MainHandler(tornado.web.RequestHandler):
    def log_exception(self, typ, value, tb):
        pass

    def get(self):
        self.write("Hello, world".s())
我的问题是如何防止未捕获异常的回溯和错误消息打印到stderr?我尝试了
sys.excepthook
,但由于未知原因,它无法与tornado一起工作

我正在使用python 3.6和tornado 4.4.2,在这里找到了它

通过重写
log\u异常
方法,您可以对该异常执行任何您想要的操作。在我的情况下,我只需要像这样通过

ERROR:tornado.application:Uncaught exception GET / (127.0.0.1)
 HTTPServerRequest(protocol='http', host='127.0.0.1:8888', method='GET', uri='/', version='HTTP/1.1', remote_ip='127.0.0.1', headers={'Host': '127.0.0.1:8888', 'Connection': 'keep-alive', 'Cache-Control': 'max-age=0', 'Upgrade-Insecure-Requests': '1', 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 'Accept-Encoding': 'gzip, deflate, sdch, br', 'Accept-Language': 'en-US,en;q=0.8'})
Traceback (most recent call last):
  File "/Users/lib/python3.6/site- packages/tornado/web.py", line 1467, in _execute
    result = method(*self.path_args, **self.path_kwargs)
  File "test.py", line 6, in get
    self.write("Hello, world".s())
AttributeError: 'str' object has no attribute 's'
ERROR:tornado.access:500 GET / (127.0.0.1) 3.08ms
class MainHandler(tornado.web.RequestHandler):
    def log_exception(self, typ, value, tb):
        pass

    def get(self):
        self.write("Hello, world".s())

如果您只想抑制错误看起来不错,但我正在寻找tornado的请求处理程序中的一些方法,我可以覆盖这些方法来实现这一点,log_异常方法就做到了