def start_analysis(self, name): datasource_record = session.query(Datasource).filter_by( company_id=self.company_id, name=name).first() if datasource_record.analysis is not None: return None semaphor_record = session.query(Semaphor).filter_by( company_id=self.company_id, entity_id=datasource_record.id, entity_type='datasource').first() if semaphor_record is None: semaphor_record = Semaphor(company_id=self.company_id, entity_id=datasource_record.id, entity_type='datasource', action='write') session.add(semaphor_record) session.commit() else: return try: analysis = self.mindsdb_native.analyse_dataset( self.get_datasource_obj(name, raw=True)) datasource_record = session.query(Datasource).filter_by( company_id=self.company_id, name=name).first() datasource_record.analysis = json.dumps(analysis) session.commit() except Exception as e: log.error(e) finally: semaphor_record = session.query(Semaphor).filter_by( company_id=self.company_id, entity_id=datasource_record.id, entity_type='datasource').first() session.delete(semaphor_record) session.commit()
def _lock_predictor(self, id, mode='write'): from mindsdb.interfaces.storage.db import session, Semaphor while True: semaphor_record = session.query(Semaphor).filter_by(company_id=self.company_id, entity_id=id, entity_type='predictor').first() if semaphor_record is not None: if mode == 'read' and semaphor_record.action == 'read': return True try: semaphor_record = Semaphor(company_id=self.company_id, entity_id=id, entity_type='predictor', action=mode) session.add(semaphor_record) session.commit() return True except Excpetion as e: pass time.sleep(1)
def start_analysis(self, name, company_id=None): dataset_record = session.query(Dataset).filter_by( company_id=company_id, name=name).first() if dataset_record.analysis_id is not None: return None semaphor_record = session.query(Semaphor).filter_by( company_id=company_id, entity_id=dataset_record.id, entity_type='dataset').first() if semaphor_record is None: semaphor_record = Semaphor(company_id=company_id, entity_id=dataset_record.id, entity_type='dataset', action='write') session.add(semaphor_record) session.commit() else: return try: analysis = self.model_interface.analyse_dataset( ds=self.get_datasource_obj(name, raw=True, company_id=company_id), company_id=company_id) dataset_record = session.query(Dataset).filter_by( company_id=company_id, name=name).first() analysis_record = Analysis( analysis=json.dumps(analysis, cls=CustomJSONEncoder)) session.add(analysis_record) session.flush() dataset_record.analysis_id = analysis_record.id session.commit() except Exception as e: log.error(e) finally: semaphor_record = session.query(Semaphor).filter_by( company_id=company_id, entity_id=dataset_record.id, entity_type='dataset').first() session.delete(semaphor_record) session.commit()