Merge pull request #1298 from tcely/patch-4

Preserve task history for rescheduled tasks
This commit is contained in:
meeb
2025-09-03 02:58:02 +10:00
committed by GitHub
2 changed files with 16 additions and 2 deletions

View File

@@ -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

View File

@@ -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=}'