diff --git a/run_log_watch.py b/run_log_watch.py index 3694a3030..12fb83a14 100644 --- a/run_log_watch.py +++ b/run_log_watch.py @@ -22,6 +22,17 @@ define("port", default=8080, help="run on the given port", type=int) define("host", default='0.0.0.0', help="run port on", type=str) +class MyThread(threading.Thread): + def __init__(self, *args, **kwargs): + super(MyThread, self).__init__(*args, **kwargs) + + def run(self): + try: + super(MyThread, self).run() + except WebSocketClosedError: + pass + + class EventHandler(ProcessEvent): def __init__(self, client=None): self.client = client @@ -34,10 +45,7 @@ class EventHandler(ProcessEvent): def process_IN_MODIFY(self, event): print "Modify file:%s." % os.path.join(event.path, event.name) - try: - self.client.write_message(f.read()) - except WebSocketClosedError: - raise WebSocketClosedError + self.client.write_message(f.read()) def file_monitor(path='.', client=None): @@ -99,7 +107,7 @@ class MonitorHandler(tornado.websocket.WebSocketHandler): # 获取监控的path self.file_path = self.get_argument('file_path', '') MonitorHandler.clients.append(self) - thread = threading.Thread(target=file_monitor, args=('%s.log' % self.file_path, self)) + thread = MyThread(target=file_monitor, args=('%s.log' % self.file_path, self)) MonitorHandler.threads.append(thread) self.stream.set_nodelay(True) @@ -116,7 +124,7 @@ class MonitorHandler(tornado.websocket.WebSocketHandler): t.setDaemon(True) t.start() - except WebSocketClosedError, e: + except WebSocketClosedError: client_index = MonitorHandler.clients.index(self) MonitorHandler.threads[client_index].stop() MonitorHandler.clients.remove(self)