【发布时间】:2017-08-28 07:35:35
【问题描述】:
我正在使用 tornado 制作一个网络服务器,它必须向所有请求 html 页面的连接客户端显示实时数据。
我使用以下工作代码:
import datetime
import time
import tornado.ioloop
import tornado.web
import tornado.websocket
import tornado.httpserver
import sys
import os.path
import binascii
import struct
class MainHandler(tornado.web.RequestHandler):
def get(self):
print "[HTTP](MainHandler) User Connected."
self.render("stack_073.html")
class WSHandler(tornado.websocket.WebSocketHandler):
def check_origin(self, origin):
return True
def open(self):
while 1:
self.write_message(data)
print data
time.sleep(1)
if __name__ == "__main__":
try:
app = tornado.httpserver.HTTPServer(tornado.web.Application([
(r'/', MainHandler),
(r'/ws', WSHandler),
]))
app.listen(80)
main_loop = tornado.ioloop.IOLoop.current()
print "Tornado Server started"
main_loop.start()
except:
print "Exception triggered - Tornado Server stopped."
此代码有效,但我已将 mainloop 放入 tornado 的 open def 中。因此,当一台计算机连接时,它会停留在该循环中并每秒更新数据。 但是这样做的好方法是什么?我必须将主循环放在哪里?
因为如果我说得好,它必须可以将多台计算机连接到具有所有相同实时数据的同一网页。
谢谢
【问题讨论】:
标签: tornado