2017-04-04 24 views
0

我有一個名爲app.py的文件。有一個類叫做EchoWebSocket。我寫了一個函數叫做on_message。我正在從javascript前端獲取像這裏的數據JSON,message = {type:'login',name:'xyz'}。我聲明瞭一個名爲的全局變量數據。現在我想解析這條消息並通過異常處理塊將其存儲在全局變量data中。但我收到一個錯誤,稱爲**引發NotImplementedError **。下面是我的python代碼,我是這些技術的新手,請幫我解決這些問題。我該如何解決在Pythone3.6中引發NotImplementedError

/app.py

class EchoWebSocket(WebSocketHandler): 

    clients = [] 

def open(self): 
    logging.info('WebSocket opened from %s', self.request.remote_ip) 
    EchoWebSocket.clients.append(self) 

def on_message(self, message): 
    #logging.info('got message from %s: %s', self.request.remote_ip, message) 
    logging.info('message %s:', message) 
    global data 
    try: 
     data = JSON.parse(message) 
    except MyError as e: 
     logging.info("Invalid JSON") 
     data = {} 

/錯誤

[I 170404 11:35:30 web:1971] 304 GET/(127.0.0.1) 1.58ms 
[I 170404 11:35:30 web:1971] 304 GET /static/js/client.js (127.0.0.1) 3.28ms 
[E 170404 11:35:34 websocket:415] Uncaught exception in /ws 
    Traceback (most recent call last): 
     File "/usr/local/python3.6/lib/python3.6/site-packages/tornado/websocket.py", line 412, in _run_callback 
     callback(*args, **kwargs) 
     File "/usr/local/python3.6/lib/python3.6/site-packages/tornado/websocket.py", line 255, in on_message 
     raise NotImplementedError 
    NotImplementedError 
+0

你'嘗試... except'塊用2個空格縮進,這很可能導致SyntaxError。 Python代碼總是以4個空格縮進。 NotImplementedError意味着程序包功能的某些部分未被實現(未被寫入)。如果它是一個類的方法,你可以重新定義它,以便它可以工作。 –

+0

四空間縮進純粹是約定的問題。使用兩個語法沒有語法問題,只是潛在的人類讀者混淆問題。 – nigel222

+0

只要你一致,兩個空格或四個空格都可以,但是還有一個更大的問題:'def open'和'def on_message'行根本沒有縮進。如果這就是它在真實代碼中的樣子(當你將它複製到堆棧溢出時不是錯誤),那就是問題所在。正如這裏所寫,當你需要將它們定義爲EchoWebSocketHandler類中的方法時,你正在定義模塊級函數'open'和'on_message'。 –

回答

0

可能是你桅杆在子類中實現on_close方法

def on_close(self): 
    print("WebSocket closed") 
相關問題