2017-03-15 21 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ブロックにすべてのコールバックをラップするか、またはこれが不快になるほど十分なものがある場合は、独自の例外を捕捉するデコレータを作成できます。

関連する問題