2017-03-15 93 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塊中,或者如果你有足夠的回調,這會讓你感到惱火,你可以製作你自己的異常捕捉裝飾器。