代码之家  ›  专栏  ›  技术社区  ›  garg10may

向所有套接字发送响应时Tornado中的断言错误

  •  1
  • garg10may  · 技术社区  · 8 年前

    但是偶尔会遇到下面的错误,它也会尝试发送相同的错误。是什么导致了同样的结果?

    12346 ERROR:2018-08-24 01:01:59,202:get_broadcast
    12347 Traceback (most recent call last):
    12348   File "/release/manik/muTrade-1.0.0-1.7.4.5/web/utrade/WebSocket/get_broadcast.py", line 321, in _send_msg_to_clients
    12349     socketConnectionObject.send(smart_str(simplejson.dumps(data)))
    12350   File "/release/st01/py3Env/lib/python3.6/site-packages/sockjs/tornado/conn.py", line 49, in send
    12351     self.session.send_message(message, binary=binary)
    12352   File "/release/st01/py3Env/lib/python3.6/site-packages/sockjs/tornado/session.py", line 322, in send_message
    12353     self.send_jsonified(proto.json_encode(bytes_to_str(msg)), stats)
    12354   File "/release/st01/py3Env/lib/python3.6/site-packages/sockjs/tornado/session.py", line 337, in send_jsonified
    12355     self.handler.send_pack('a[%s]' % msg)
    12356   File "/release/st01/py3Env/lib/python3.6/site-packages/sockjs/tornado/transports/websocket.py", line 86, in send_pack
    12357     self.write_message(message, binary)
    12358   File "/release/st01/py3Env/lib/python3.6/site-packages/tornado/websocket.py", line 252, in write_message
    12359     return self.ws_connection.write_message(message, binary=binary)
    12360   File "/release/st01/py3Env/lib/python3.6/site-packages/tornado/websocket.py", line 783, in write_message
    12361     message = self._compressor.compress(message)
    12362   File "/release/st01/py3Env/lib/python3.6/site-packages/tornado/websocket.py", line 548, in compress
    12363     assert data.endswith(b'\x00\x00\xff\xff')
    12364 AssertionError
    

    一: https://github.com/tornadoweb/tornado/issues/2479

    1 回复  |  直到 8 年前
        1
  •  1
  •   garg10may    8 年前

    这是由多个线程引起的。我将socketclientobjects(在与龙卷风建立新连接时生成)存储在一个列表中,并在其他线程中使用它们发送消息。

    socketObject.send(simplejson.dumps(msg)) 直接在线程内部调用

    tornado.ioloop.IOLoop.current().add_callback( socketObject.send, simplejson.dumps(msg))
    

    一切都很顺利。我收到多个错误,都解决了。