Skip to content
Snippets Groups Projects
Commit 42ff29b7 authored by Martin Mareš's avatar Martin Mareš
Browse files

Jobs: Dřívějšímu "retry" nyní říkáme "restart"

parent fcd0d62b
No related branches found
No related tags found
No related merge requests found
......@@ -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)
......@@ -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()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment