ループを終了することなく値を無限ループに更新しようとしています。この値は、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で構文的に重要** **なので、修正するまではこれを議論するのは無駄です。 –