[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