2017-03-15 128 views
0

我想捕捉我的WebSocketHandler中未捕获的异常。但Tornado的WebSocketHandler不具有与HTTP RequestHandler相同的异常处理接口。龙卷风websocket处理程序未捕获的异常

在上面的源代码,它看起来像异常被捕获并记录在这里:

def _run_callback(self, callback, *args, **kwargs): 
    """Runs the given callback with exception handling. 

    On error, aborts the websocket connection and returns False. 
    """ 
    try: 
     callback(*args, **kwargs) 
    except Exception: 
     app_log.error("Uncaught exception in %s", 
         self.request.path, exc_info=True) 
     self._abort() 

而是黑客一个实现了上述方法的处理程序和子类WebSocketProtocol的,有没有更好的办法赶上在例外WebSocketHandler

回答

0

子类化和重载WebSocketProtocol._run_callback是目前从基类完成此操作的最佳方式。但是因为子类化并重写此方法很麻烦,所以最好在应用程序级别处理此问题,直到proper support can be added to the framework。将所有回调包装在一个大的try/except块中,或者如果你有足够的回调,这会让你感到恼火,你可以制作你自己的异常捕捉装饰器。