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
Branches
No related tags found
No related merge requests found
...@@ -6,18 +6,18 @@ import argparse ...@@ -6,18 +6,18 @@ import argparse
parser = argparse.ArgumentParser(description='Spustí joby ve frontě') 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('-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() args = parser.parse_args()
init_standalone() init_standalone()
if args.job is None: if args.job is None:
if args.retry: if args.restart:
die("Přepínač --retry lze použít jen s --job") die("Přepínač --restart lze použít jen s --job")
mo.jobs.process_jobs() mo.jobs.process_jobs()
else: else:
tj = mo.jobs.TheJob(args.job) tj = mo.jobs.TheJob(args.job)
if not tj.load(): if not tj.load():
die("Tento job neexistuje") die("Tento job neexistuje")
tj.run(retry=args.retry) tj.run(restart=args.restart)
...@@ -116,19 +116,19 @@ class TheJob: ...@@ -116,19 +116,19 @@ class TheJob:
logger.info(f'{self.log_prefix} >> {msg}') logger.info(f'{self.log_prefix} >> {msg}')
self.errors.append(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 s = self.job.state
if s == db.JobState.ready: if s in (db.JobState.ready, db.JobState.soft_error):
return None return None
elif s == db.JobState.running: elif s == db.JobState.running:
# Může se stát, že ho mezitím začal vyřizovat jiný proces # Může se stát, že ho mezitím začal vyřizovat jiný proces
return 'právě běží' return 'právě běží'
elif s in (db.JobState.done, db.JobState.failed, db.JobState.internal_error): 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: else:
return 'je v neznámém stavu' return 'je v neznámém stavu'
def run(self, retry: bool = False): def run(self, restart: bool = False):
sess = db.get_session() sess = db.get_session()
if not self.load(): if not self.load():
# Někdo ho mezitím smazal # Někdo ho mezitím smazal
...@@ -136,7 +136,7 @@ class TheJob: ...@@ -136,7 +136,7 @@ class TheJob:
sess.rollback() sess.rollback()
return return
reject_reason = self._check_runnable(retry) reject_reason = self._check_runnable(restart)
if reject_reason is not None: if reject_reason is not None:
logger.info(f'{self.log_prefix} {reject_reason}') logger.info(f'{self.log_prefix} {reject_reason}')
sess.rollback() sess.rollback()
... ...
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment