[SCM] live-studio branch, master, updated. be51da814fb12d25dce46a7f078a46f5c89bd777
Chris Lamb
lamby at debian.org
Fri Jul 30 02:52:35 UTC 2010
The following commit has been merged in the master branch:
commit efab243bb32445a87544f2f618617edc609627a9
Author: Chris Lamb <lamby at debian.org>
Date: Thu Jul 29 11:42:20 2010 -0400
Queue runner maintains state of the build (w/timestamps)
Signed-off-by: Chris Lamb <lamby at debian.org>
diff --git a/live_studio/queue/management/commands/queue_runner.py b/live_studio/queue/management/commands/queue_runner.py
index 5697729..0aa3f50 100644
--- a/live_studio/queue/management/commands/queue_runner.py
+++ b/live_studio/queue/management/commands/queue_runner.py
@@ -1,4 +1,5 @@
import time
+import datetime
from django.core.management.base import NoArgsCommand
@@ -10,9 +11,22 @@ class Command(NoArgsCommand):
while True:
try:
- # Pop
- entry = Entry.objects.all()[0]
- self.handle_entry(entry)
+ entry = Entry.objects.pop()
+
+ def update(**kwargs):
+ print entry.pk, kwargs
+ Entry.objects.filter(pk=entry.pk).update(**kwargs)
+
+ update(started=datetime.datetime.utcnow())
+
+ try:
+ self.handle_entry(entry)
+ update(success=True)
+ except:
+ continue
+ finally:
+ update(finished=datetime.datetime.utcnow())
+
except IndexError:
time.sleep(2)
diff --git a/live_studio/queue/managers.py b/live_studio/queue/managers.py
new file mode 100644
index 0000000..1069ae8
--- /dev/null
+++ b/live_studio/queue/managers.py
@@ -0,0 +1,5 @@
+from django.db import models
+
+class EntryManager(models.Manager):
+ def pop(self):
+ return self.filter(started__isnull=True)[0]
diff --git a/live_studio/queue/models.py b/live_studio/queue/models.py
index 7df1ced..580b6fd 100644
--- a/live_studio/queue/models.py
+++ b/live_studio/queue/models.py
@@ -2,6 +2,17 @@ import datetime
from django.db import models
+from .managers import EntryManager
+
class Entry(models.Model):
config = models.ForeignKey('config.Config')
- created = models.DateTimeField(default=datetime.datetime.utcnow)
+
+ enqueued = models.DateTimeField(default=datetime.datetime.utcnow)
+ started = models.DateTimeField(null=True)
+ finished = models.DateTimeField(null=True)
+ success = models.BooleanField(default=False)
+
+ objects = EntryManager()
+
+ class Meta:
+ ordering = ('-enqueued',)
--
live-studio
More information about the debian-live-changes
mailing list