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
你'嘗試... except'塊用2個空格縮進,這很可能導致SyntaxError。 Python代碼總是以4個空格縮進。 NotImplementedError意味着程序包功能的某些部分未被實現(未被寫入)。如果它是一個類的方法,你可以重新定義它,以便它可以工作。 –
四空間縮進純粹是約定的問題。使用兩個語法沒有語法問題,只是潛在的人類讀者混淆問題。 – nigel222
只要你一致,兩個空格或四個空格都可以,但是還有一個更大的問題:'def open'和'def on_message'行根本沒有縮進。如果這就是它在真實代碼中的樣子(當你將它複製到堆棧溢出時不是錯誤),那就是問題所在。正如這裏所寫,當你需要將它們定義爲EchoWebSocketHandler類中的方法時,你正在定義模塊級函數'open'和'on_message'。 –