diff --git a/bin/run-jobs b/bin/run-jobs index c72a583e88a317567d1188392e8ff650790e8a58..2b76a58fd87399a94bdd711e9f9624075d96a9de 100755 --- a/bin/run-jobs +++ b/bin/run-jobs @@ -6,18 +6,18 @@ import argparse parser = argparse.ArgumentParser(description='Spustí joby ve frontě') parser.add_argument('-j', '--job', type=int, metavar='ID', help='Spustí konkrétní job') -parser.add_argument('-r', '--retry', default=False, action='store_true', help='Znovu spustí dokončený job') +parser.add_argument('-r', '--restart', default=False, action='store_true', help='Znovu spustí dokončený job') args = parser.parse_args() init_standalone() if args.job is None: - if args.retry: - die("Přepínač --retry lze použít jen s --job") + if args.restart: + die("Přepínač --restart lze použít jen s --job") mo.jobs.process_jobs() else: tj = mo.jobs.TheJob(args.job) if not tj.load(): die("Tento job neexistuje") - tj.run(retry=args.retry) + tj.run(restart=args.restart) diff --git a/mo/jobs/__init__.py b/mo/jobs/__init__.py index 8b30dc26d3346e45fa8b213c652a9764f8bcaa23..a8f96e55760da1ca933b90fa16dcda40f4705ed4 100644 --- a/mo/jobs/__init__.py +++ b/mo/jobs/__init__.py @@ -116,19 +116,19 @@ class TheJob: logger.info(f'{self.log_prefix} >> {msg}') self.errors.append(msg) - def _check_runnable(self, retry: bool) -> Optional[str]: + def _check_runnable(self, restart: bool) -> Optional[str]: s = self.job.state - if s == db.JobState.ready: + if s in (db.JobState.ready, db.JobState.soft_error): return None elif s == db.JobState.running: # Může se stát, že ho mezitím začal vyřizovat jiný proces return 'právě běží' elif s in (db.JobState.done, db.JobState.failed, db.JobState.internal_error): - return None if retry else 'je už hotový' + return None if restart else 'je už hotový' else: return 'je v neznámém stavu' - def run(self, retry: bool = False): + def run(self, restart: bool = False): sess = db.get_session() if not self.load(): # Někdo ho mezitím smazal @@ -136,7 +136,7 @@ class TheJob: sess.rollback() return - reject_reason = self._check_runnable(retry) + reject_reason = self._check_runnable(restart) if reject_reason is not None: logger.info(f'{self.log_prefix} {reject_reason}') sess.rollback()