def run_task(): self.tmp_dir = tempfile.mkdtemp(prefix="sasi_runner.") self.db_file = os.path.join(self.tmp_dir, "sasi_runner.db") self.progressBar.setValue(0) self.progressBar.setIndeterminate(True) def get_connection(): engine = create_engine('h2+zxjdbc:////%s' % self.db_file) con = engine.connect() return con try: # Set result fields. result_fields = [] for field_id, is_selected in self.selected_result_fields.items(): if is_selected: result_fields.append(field_id) task = RunSasiTask( input_path=self.selected_input_file.path, output_file=self.selected_output_file.path, logger=self.logger, get_connection=get_connection, config={ 'result_fields': result_fields, 'run_model': { 'run': { 'batch_size': 'auto', } }, 'output': { 'batch_size': 'auto', }, } ) task.call() except Exception as e: self.logger.exception("Could not complete task") self.progressBar.setIndeterminate(False) self.progressBar.setValue(100) try: shutil.rmtree(self.tmp_dir) except: pass
def test_run_sasi_task(self): self.data_dir = generate_data_dir(effort_model='nominal') def get_connection(): if platform.system() == 'Java': db_uri = 'h2+zxjdbc:///mem:' else: db_uri = 'sqlite://' engine = create_engine(db_uri) con = engine.connect() return con logger = logging.getLogger('test') logger.addHandler(logging.StreamHandler()) logger.setLevel(logging.INFO) task = RunSasiTask( input_path=self.data_dir, get_connection=get_connection, logger=logger, config={ #'result_fields': ['gear_id', 'substrate_id'], 'ingest': { 'sections': { 'gears': { #'limit': 1, }, 'habitats': { #'limit': 1000, }, 'grid': { #'limit': 100, } } }, 'run_model': { 'run': { 'batch_size': 'auto', } }, } ) task.call()