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

Jobs: Některé joby mohou expirovat po delší době

parent 439f625b
No related branches found
No related tags found
1 merge request!81Generování protokolů a zpracování scanů
......@@ -48,6 +48,9 @@ GC_PERIOD = 60
# Za jak dlouho expiruje dokončená dávka [min]
JOB_EXPIRATION = 5
# Některé dávky (analýza scanů) mají delší expiraci [min]
JOB_EXPIRATION_LONG = 1440
# Kolik nejvýše dovolujeme registrací za minutu
REG_MAX_PER_MINUTE = 10
......
......
......@@ -27,6 +27,7 @@ class TheJob:
job_id: Optional[int]
gatekeeper: Optional[mo.rights.Gatekeeper]
errors: List[str]
expires_in_minutes: int
def __init__(self, job_id: Optional[int] = None):
"""Pokud chceme pracovat s existujícím jobem, zadáme jeho ID."""
......@@ -133,10 +134,13 @@ class TheJob:
job = self.job
logger.info(f'Job: Spouštím job #{job.job_id} ({job.type}) uživatele #{job.user_id}')
job.state = db.JobState.running
job.finished_at = None
job.expires_at = None
sess.commit()
try:
self.gatekeeper = mo.rights.Gatekeeper(job.user)
self.expires_in_minutes = config.JOB_EXPIRATION
_handler_table[job.type](self)
if self.errors:
logger.info(f'Job: Neúspěšně dokončen job #{job.job_id} ({job.result})')
......@@ -153,7 +157,7 @@ class TheJob:
job.result = 'Interní chyba, informujte prosím správce systému.'
job.finished_at = mo.util.get_now()
job.expires_at = job.finished_at + timedelta(minutes=config.JOB_EXPIRATION)
job.expires_at = job.finished_at + timedelta(minutes=self.expires_in_minutes)
sess.commit()
......
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment