Привязка веб-сайта Python

#python #websocket #tornado

Вопрос:

Здравствуйте, я хочу создать несколько сервисов, которые взаимодействуют через веб-сайты на Python. Для этого я использую tornado.websocket.

Одной из этих служб является контроллер, и каждая другая служба должна зарегистрироваться на контроллере. Итак, торнадо.websocket.WebSocketHandler каким-то образом является «пассивным» кодом, потому что он ожидает входящего сообщения и ответа на входящее сообщение. Поэтому для регистрации службы на контроллере я использую websocket_connect (), контроллер сохраняет соединение и ответ на него. Вот в чем проблема, мне нужно, чтобы ответ был отправлен на on_message() tornado.websocket.WebSocketHandler, а не к объекту websocket_connect().

Можно ли перенаправить это сообщение из websocket_connect() в on_message? Я попытался выполнить обратный вызов на websocket_connect, но возникла проблема, что мне нужна информация об отправителе сообщения, а не только само сообщение.

 class WSHandler(tornado.websocket.WebSocketHandler):
def open(self):
    pass

def on_message(self, message):
    pass

def on_close(self):
    pass

def check_origin(self, origin):
    """Must return true to disable CORS-policy"""
    return True

def data_received(self, chunk: bytes):
    pass
    
        
def make_app(drf, handler_factory, hn_cfg):
    application = tornado.web.Application([
        (r'/.*`', WSHandler, {}),
    ])
    return application


def main():

platform_setup()

port = int(load_env("PORT", 8080))


# WS client Setup
ws_cfg = WsClientConfiguration.from_environment("CTR_")
ws_cli_hn = WsClient(drf, ws_cfg)

ws_handler = WSHandler_Test(drf, handler_factory, hn_cfg)
loop = asyncio.get_event_loop()
loop.run_until_complete(ws_cli_hn.register_ctr(SVC_NAME, ws_handler))

app = make_app(drf, handler_factory, hn_cfg)

user_manager_cfg.printout()

run_web_socket_server(app, port)


if __name__ == "__main__":
    main()