Add initial support for deleting pending jobs and requeuing failed jobs

This commit is contained in:
Roberto Rosario
2012-08-03 13:35:06 -04:00
parent d7ddbc2c62
commit b812a68777
8 changed files with 111 additions and 13 deletions
+20 -5
View File
@@ -180,12 +180,13 @@ class JobQueueItem(models.Model):
return self.unique_id
def save(self, *args, **kwargs):
self.creation_datetime = datetime.datetime.now()
if not self.pk:
self.creation_datetime = datetime.datetime.now()
if self.job_queue.unique_jobs:
self.unique_id = hashlib.sha256(u'%s-%s' % (self.job_type, self.kwargs)).hexdigest()
else:
self.unique_id = unicode(uuid.uuid4())
if self.job_queue.unique_jobs:
self.unique_id = hashlib.sha256(u'%s-%s' % (self.job_type, self.kwargs)).hexdigest()
else:
self.unique_id = unicode(uuid.uuid4())
try:
super(JobQueueItem, self).save(*args, **kwargs)
except IntegrityError:
@@ -206,6 +207,20 @@ class JobQueueItem(models.Model):
except Worker.DoesNotExist:
return None
@property
def is_in_error_state(self):
return self.state == JOB_STATE_ERROR
@property
def is_in_pending_state(self):
return self.state == JOB_STATE_PENDING
def requeue(self):
if self.is_in_error_state:
self.state = JOB_STATE_PENDING
self.creation_datetime = datetime.datetime.now()
self.save()
class Meta:
ordering = ('creation_datetime',)
verbose_name = _(u'job queue item')