我试图建立一个实时服务器统计与龙卷风网站。这是我的python脚本
#!/usr/bin/python
.
.(imports)
.
# create logger
# set up logging to file - see previous section for more details
logging.basicConfig(level=logging.INFO,
format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s',
datefmt='%m-%d %H:%M',
filename='/var/www/home/storage/app/logs/tornado.log',
filemode='w')
formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s')
logger = logging.getLogger('realtime.py')
timeInterval= 2000 #Milliseconds
class WSHandler(tornado.websocket.WebSocketHandler):
def getCpuTemp( self ):
.
.
def getCpuUsage( self ):
.
.
def getRamUsage( self ):
.
.
def lr_temp(self):
.
.
def open(self):
logger.info('Connection Open')
#wss.append(self)
self.callback = PeriodicCallback(self.sendData, timeInterval)
self.callback.start()
def on_message(self, message):
try:
msg = json.loads(message)
except ValueError:
self.send_error("Invalid JSON")
logger.info('Invalid JSON')
return
#logger.info('message received: %s' % message)
logger.info('Message Received , JSON valid')
def sendData(self):
self.write_message(self.getCpuTemp() + ';' + self.lr_temp() + ';' + self.getCpuUsage() + ';' + self.getRamUsage())
def on_close(self):
logger.info('Connection Closed')
def check_origin(self, origin):
return True
application = tornado.web.Application([
(r'/ws', WSHandler),
])
if __name__ == "__main__":
http_server = tornado.httpserver.HTTPServer(application)
http_server.listen(8888)
myIP = socket.gethostbyname(socket.gethostname())
#print '*** Websocket Server Started at %s***' % myIP
tornado.ioloop.IOLoop.instance().start()
启动脚本后,一切正常,但当我刷新页面或发送消息时,脚本将进入此错误循环:
^{pr2}$有什么办法解决这个错误吗?在
在
on_close
中,需要调用self.callback.stop()
。当连接关闭时,您可能仍然会遇到一个错误,但它不会进入循环。要使该错误也静音,请在对write_message
的调用周围使用try/catch。在相关问题 更多 >
编程相关推荐