Я пытаюсь обновить значение в бесконечном цикле, не выходя из цикла. Это значение отправляется как параметр из клиента WebSocket. Мой вопрос: как я могу обновить значение, которое находится внутри бесконечного цикла?Можно обновить значение в цикле
class WebSocketHandler(tornado.websocket.WebSocketHandler):
def open(self):
print('new connection')
clients.append(self)
self.write_message("connected")
def on_message(self, message):
print('tornado received from client: %s' % message)
new_message =""
while True:
new_message=self.updateMessage(message)
print(new_message)
def updateMessage(self, message):
return(message)
def main():
parse_command_line()
app = tornado.web.Application(
[
(r"/ws", WebSocketHandler)
],
template_path=os.path.join(os.path.dirname(__file__), "templates"),
static_path=os.path.join(os.path.dirname(__file__), "static")
)
app.listen(options.port)
tornado.ioloop.IOLoop.current().start()
if __name__ == "__main__":
main()
Я хочу, чтобы напечатанное сообщение внутри цикла обновления с новым сообщением, которое получено в ON_MESSAGE функции. Если я удалю цикл while, будет напечатано новое сообщение (новое значение, отправленное клиентом Websocket). Но теперь на нем напечатано только первое сообщение (значение) навсегда, потому что цикл.
Я думаю, было бы неплохо перевести ваш код на простой пример, который отражает суть вашего вопроса, который звучит как основной вопрос python. Это более общий способ (то есть полезен будущим читателям), и нам не нужно разбирать много кода WebSocket. – user20160
Ваш отступ сломан. Поскольку вложение является синтаксически важным ** в python, бесполезно обсуждать это, пока вы не исправите это. –