亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 2920 | 回復: 3
打印 上一主題 下一主題

使用json時出現(xiàn)UnboundLocalError 錯誤 [復制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2015-01-21 11:13 |只看該作者 |倒序瀏覽
本帖最后由 eveson 于 2015-01-21 11:15 編輯

問題:
直接調(diào)用
  1. self.rpc({"jsonrpc": "2.0", "method": "test", "params": [123], "id": 1})
復制代碼
就沒有問題
如果換成變量self.rpc(recvstr)  就會拋出異常
代碼:
  1. def test(num):
  2.    str = {"FunId":1, "Stat":0, "param":num}
  3.    print(str)
  4.    return str

  5. global recvstr
  6. class MyServerProtocol(WebSocketServerProtocol):
  7.    def __init__(self):
  8.       self.rpc = JsonRpc()
  9.       self.rpc['test'] = test
  10.           
  11.    def onConnect(self, request):
  12.       print("Client connecting: {0}".format(request.peer))

  13.    def onOpen(self):
  14.       print("WebSocket connection open.")

  15.    def onMessage(self, payload, isBinary):
  16.       if isBinary:
  17.          print("Binary message received: {0} bytes".format(len(payload)))
  18.       else:
  19.          recvstr = format(payload.decode('utf8'))
  20.          print("Text message received:",recvstr)
  21.          self.rpc(recvstr)
  22.          #self.rpc({"jsonrpc": "2.0", "method": "test", "params": [123], "id": 1})
  23.       ## echo back message verbatim
  24.       self.sendMessage(payload, isBinary)

  25.    def onClose(self, wasClean, code, reason):
  26.       print("WebSocket connection closed: {0}".format(reason))
復制代碼
錯誤:
  1. Text message received: {"method": "test", "params": [123], "id": 1, "jsonrpc": "2.0"}
  2. Exception in callback WebSocketAdapterProtocol._consume.<locals>.process(<Future finished result=None>) at /usr/local/lib/python3.4/site-packages/autobahn-0.9.5-py3.4.egg/autobahn/asyncio/websocket.py:94
  3. handle: <Handle WebSocketAdapterProtocol._consume.<locals>.process(<Future finished result=None>) at /usr/local/lib/python3.4/site-packages/autobahn-0.9.5-py3.4.egg/autobahn/asyncio/websocket.py:94>
  4. Traceback (most recent call last):
  5.   File "/usr/local/lib/python3.4/asyncio/events.py", line 119, in _run
  6.     self._callback(*self._args)
  7.   File "/usr/local/lib/python3.4/site-packages/autobahn-0.9.5-py3.4.egg/autobahn/asyncio/websocket.py", line 98, in process
  8.     self._dataReceived(data)
  9.   File "/usr/local/lib/python3.4/site-packages/autobahn-0.9.5-py3.4.egg/autobahn/websocket/protocol.py", line 1328, in _dataReceived
  10.     self.consumeData()
  11.   File "/usr/local/lib/python3.4/site-packages/autobahn-0.9.5-py3.4.egg/autobahn/websocket/protocol.py", line 1344, in consumeData
  12.     while self.processData() and self.state != WebSocketProtocol.STATE_CLOSED:
  13.   File "/usr/local/lib/python3.4/site-packages/autobahn-0.9.5-py3.4.egg/autobahn/websocket/protocol.py", line 1503, in processData
  14.     return self.processDataHybi()
  15.   File "/usr/local/lib/python3.4/site-packages/autobahn-0.9.5-py3.4.egg/autobahn/websocket/protocol.py", line 1817, in processDataHybi
  16.     fr = self.onFrameEnd()
  17.   File "/usr/local/lib/python3.4/site-packages/autobahn-0.9.5-py3.4.egg/autobahn/websocket/protocol.py", line 1947, in onFrameEnd
  18.     self._onMessageEnd()
  19.   File "/usr/local/lib/python3.4/site-packages/autobahn-0.9.5-py3.4.egg/autobahn/asyncio/websocket.py", line 154, in _onMessageEnd
  20.     res = self.onMessageEnd()
  21.   File "/usr/local/lib/python3.4/site-packages/autobahn-0.9.5-py3.4.egg/autobahn/websocket/protocol.py", line 743, in onMessageEnd
  22.     self._onMessage(payload, self.message_is_binary)
  23.   File "/usr/local/lib/python3.4/site-packages/autobahn-0.9.5-py3.4.egg/autobahn/asyncio/websocket.py", line 160, in _onMessage
  24.     res = self.onMessage(payload, isBinary)
  25.   File "server.py", line 46, in onMessage
  26.     self.rpc(recvstr)
  27.   File "/usr/local/lib/python3.4/site-packages/jsonrpc2-0.4.1-py3.4.egg/jsonrpc2/__init__.py", line 206, in __call__
  28.     return resdata
  29. UnboundLocalError: local variable 'resdata' referenced before assignment
復制代碼

論壇徽章:
0
2 [報告]
發(fā)表于 2015-01-21 11:29 |只看該作者
請高手給看下怎么回事,搞了一上午了,哎,python用的不熟啊

論壇徽章:
1
子鼠
日期:2014-05-04 13:59:31
3 [報告]
發(fā)表于 2015-01-21 14:34 |只看該作者
你測試的參數(shù)和運行是的參數(shù) recvstr  數(shù)據(jù)類型不是一樣的
recvstr.__class___ 看下

論壇徽章:
0
4 [報告]
發(fā)表于 2015-01-21 16:12 |只看該作者
解決了。追到庫jsonrpc的源碼里面,找了個他自己使用的過程看了下,原來調(diào)用rpc之前必須json.loads一下。
C語言用慣了,什么事情,總想自己推理、實現(xiàn),用python還是老老實實看api,看demo
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP