From 41e78b430dd968c9f590837428537e8868353560 Mon Sep 17 00:00:00 2001 From: tcely Date: Mon, 24 Mar 2025 16:03:56 -0400 Subject: [PATCH] Add and use the `Task.nodename` property --- patches/background_task/models.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/patches/background_task/models.py b/patches/background_task/models.py index 1abda5ab..de246c57 100644 --- a/patches/background_task/models.py +++ b/patches/background_task/models.py @@ -208,14 +208,18 @@ class Task(models.Model): objects = TaskManager() + @property + def nodename(self): + return os.uname().nodename[:(64-10)] + def locked_by_pid_running(self): """ Check if the locked_by process is still running. """ if self in objects.locked(timezone.now()) and self.locked_by: - pid, node = self.locked_by.split('/', 1) + pid, nodename = self.locked_by.split('/', 1) # locked by a process on this node? - if os.uname().nodename[:(64-10)] != node: + if nodename != self.nodename: return False # is the process still running? try: @@ -243,7 +247,7 @@ class Task(models.Model): def lock(self, locked_by): now = timezone.now() - owner = f'{locked_by[:8]}/{os.uname().nodename[:(64-10)}' + owner = f'{locked_by[:8]}/{self.nodename}' unlocked = Task.objects.unlocked(now).filter(pk=self.pk) updated = unlocked.update(locked_by=owner, locked_at=now) if updated: