class AnalyzeThread(threading.Thread): def __init__(self): threading.Thread.__init__(self) self.logger = logger.get_logger() self.obs = None self.sleep_time = 3 self.analyzer = Analyzer() self.obs_lock = threading.Lock() self.stream_model = StreamModel() self.sample_model = SampleModel() def notify_obs_changed(self, new_obs): self.obs_lock.acquire() self.obs = new_obs self.obs_lock.release() def _get_obs(self): ret = None self.obs_lock.acquire() ret = self.obs self.obs_lock.release() return ret def _get_map_stream_ids(self, _map): return [msq.stream_id for msq in _map.items] def run(self): while True: all_streams = self._get_obs() streams_in_db = self.stream_model.get_all() if all_streams == None: all_streams = streams_in_db sended_requests = [] _map = {} for stream in all_streams: sended_requests.append( MediaServerAdminQueryer(self.analyzer, stream['stream_id'], stream['sample_interface'], _map)) asyncore.loop(map=_map) delete_streams, update_streams, add_streams = self._get_changed_streams( streams_in_db, all_streams) try: self._update_db(delete_streams, update_streams, add_streams, sended_requests) except MySQLdb.Error, e: self.logger.warn("update_db failed") time.sleep(self.sleep_time)
class AnalyzeThread(threading.Thread): def __init__(self): threading.Thread.__init__(self) self.logger = logger.get_logger() self.obs = None self.sleep_time = 3 self.analyzer = Analyzer() self.obs_lock = threading.Lock() self.stream_model = StreamModel() self.sample_model = SampleModel() def notify_obs_changed(self, new_obs): self.obs_lock.acquire() self.obs = new_obs self.obs_lock.release() def _get_obs(self): ret = None self.obs_lock.acquire() ret = self.obs self.obs_lock.release() return ret def _get_map_stream_ids(self, _map): return [msq.stream_id for msq in _map.items] def run(self): while True: all_streams = self._get_obs() streams_in_db = self.stream_model.get_all() if all_streams == None: all_streams = streams_in_db sended_requests = [] _map = {} for stream in all_streams: sended_requests.append(MediaServerAdminQueryer(self.analyzer, stream['stream_id'], stream['sample_interface'], _map)) asyncore.loop(map = _map) delete_streams, update_streams, add_streams = self._get_changed_streams(streams_in_db, all_streams) try: self._update_db(delete_streams, update_streams, add_streams, sended_requests) except MySQLdb.Error, e: self.logger.warn("update_db failed") time.sleep(self.sleep_time)