Exemple #1
0
 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)
Exemple #3
0
    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()