Merge pull request #1298 from tcely/patch-4
Preserve task history for rescheduled tasks
This commit is contained in:
@@ -108,9 +108,21 @@ class Huey(huey_Huey):
|
||||
self.revoke(t, revoke_once=True)
|
||||
task_eta = utils.normalize_time(eta=eta, utc=self.utc)
|
||||
for t in found:
|
||||
previous_id = t.id
|
||||
t.eta = task_eta
|
||||
t.id = t.create_id()
|
||||
t.revoke_id = f'r:{t.id}'
|
||||
try:
|
||||
from common.models import TaskHistory
|
||||
th = TaskHistory.objects.get(task_id=previous_id)
|
||||
except:
|
||||
pass
|
||||
else:
|
||||
# clone the old task history
|
||||
th.pk = None
|
||||
th._state.adding = True
|
||||
th.task_id = t.id
|
||||
th.save()
|
||||
self.enqueue(t)
|
||||
return True
|
||||
|
||||
|
||||
@@ -1189,8 +1189,10 @@ class TaskScheduleView(FormView, SingleObjectMixin):
|
||||
msg = f'TaskScheduleView: queue not found: {pk=} {queue=}'
|
||||
log.exception(msg, exc_info=e)
|
||||
else:
|
||||
self.object.scheduled_at = max(self.now, when)
|
||||
if q.reschedule(task_id, self.object.scheduled_at):
|
||||
eta = max(self.now, when)
|
||||
if q.reschedule(task_id, eta):
|
||||
vn = self.object.verbose_name or task_id or pk
|
||||
self.object.verbose_name = f'[revoked] {vn}'
|
||||
self.object.save()
|
||||
else:
|
||||
msg = f'TaskScheduleView: task not found: {pk=} {task_id=}'
|
||||
|
||||
Reference in New Issue
Block a user