def websocket_app (environ, start_response): try: if environ['PATH_INFO'] == '/playground': websocket = environ['wsgi.websocket'] while True: try: data = websocket.receive() if not data: State.forget_client(websocket) break else: utils.handle_message(websocket, data) except WebSocketError: raise finally: DBSession.remove() except Exception: logger.warn("Playfield: uncaught error is occured.", exc_info = True)