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()