Обработчик веб-сокета Tornado, self.close () закрывает соединение, не вызывая метод on_close ()
Я новичок в (python, stackoverflow, tornado), поэтому, пожалуйста, будьте терпеливы :). Исправь меня.
Я работаю с торнадо в приложении в реальном времени. Когда я вызываю self.close () внутри класса обработчика Websocket, метод on_close не запускается, на этот раз я сделал небольшую оболочку, исправив проблему и (например) отбросив этого подключенного агента (чистый avascript wss api клиент) правильно.
Все проблемы с сетью отбрасываются, так как мой плохой упаковщик работает хорошо, и я нахожусь в среде локальной сети.
у кого-то такая же проблема? Я не могу спать без объяснения причин.
СПАСИБО, правда.
## imports and other stuff
AGENTS = set()
class BackofficeWSSRailMain(tornado.websocket.WebSocketHandler):
def on_open(self):
pass
def on_message(self,raw_message):
json_msg=json.loads(raw_message)
login = function_that_process_login(json_msg)
if login == True:
AGENTS.add(self)
self.write_message("ok")
else:
self.write_message("nologin")
self.close() ### this part should fireup
### the on_close method but nothing
### happens so AGENT is not discarded.
### here is when i actually call on_close_wrapper(),
### the method below.
def on_close_wrapper(self):
self.close() ### this is my actual solution ,
### waiting for more research.
self.on_close()
def on_close(self):
AGENTS.discard(self)
## Calling ioloop ...