diff --git a/etc/config.py.example b/etc/config.py.example index af31c885e4b8e54e644833d85064433a921fb6df..b0bf382553cd958969bc06a50865992f0345b257 100644 --- a/etc/config.py.example +++ b/etc/config.py.example @@ -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 diff --git a/mo/jobs/__init__.py b/mo/jobs/__init__.py index e443573ea9414531096f89990d3fab7e50b43c39..2d7da1a06762287ec011e153a8292657d6acbaab 100644 --- a/mo/jobs/__init__.py +++ b/mo/jobs/__init__.py @@ -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()