Add and use the Task.nodename property
This commit is contained in:
1 parent
1fd8214f3e
commit
41e78b430d
1 file changed
+7
-3
@@ -208,14 +208,18 @@ class Task(models.Model):
|
|||||||
|
|
||||||
objects = TaskManager()
|
objects = TaskManager()
|
||||||
|
|
||||||
|
@property
|
||||||
|
def nodename(self):
|
||||||
|
return os.uname().nodename[:(64-10)]
|
||||||
|
|
||||||
def locked_by_pid_running(self):
|
def locked_by_pid_running(self):
|
||||||
"""
|
"""
|
||||||
Check if the locked_by process is still running.
|
Check if the locked_by process is still running.
|
||||||
"""
|
"""
|
||||||
if self in objects.locked(timezone.now()) and self.locked_by:
|
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?
|
# locked by a process on this node?
|
||||||
if os.uname().nodename[:(64-10)] != node:
|
if nodename != self.nodename:
|
||||||
return False
|
return False
|
||||||
# is the process still running?
|
# is the process still running?
|
||||||
try:
|
try:
|
||||||
@@ -243,7 +247,7 @@ class Task(models.Model):
|
|||||||
|
|
||||||
def lock(self, locked_by):
|
def lock(self, locked_by):
|
||||||
now = timezone.now()
|
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)
|
unlocked = Task.objects.unlocked(now).filter(pk=self.pk)
|
||||||
updated = unlocked.update(locked_by=owner, locked_at=now)
|
updated = unlocked.update(locked_by=owner, locked_at=now)
|
||||||
if updated:
|
if updated:
|
||||||
|
|||||||
Reference in new issue
Block a user