mirror of
https://github.com/django-q2/django-q2.git
synced 2026-09-19 02:48:16 +08:00
Only updates existing tasks if it was failing
updates stopped, result and success only for existing task results if the original result was failing. Otherwise the result is discarded.
This commit is contained in:
@@ -408,19 +408,28 @@ def save_task(task, broker):
|
||||
try:
|
||||
if task['success'] and 0 < Conf.SAVE_LIMIT <= Success.objects.count():
|
||||
Success.objects.last().delete()
|
||||
Task.objects.update_or_create(id=task['id'],
|
||||
name=task['name'],
|
||||
defaults={
|
||||
'func': task['func'],
|
||||
'hook': task.get('hook'),
|
||||
'args': task['args'],
|
||||
'kwargs': task['kwargs'],
|
||||
'started': task['started'],
|
||||
'stopped': task['stopped'],
|
||||
'result': task['result'],
|
||||
'group': task.get('group'),
|
||||
'success': task['success']}
|
||||
)
|
||||
# check if this task has previous results
|
||||
if Task.objects.filter(id=task['id'], name=task['name']).exists():
|
||||
existing_task = Task.objects.get(id=task['id'], name=task['name'])
|
||||
# only update the result if it hasn't succeeded yet
|
||||
if not existing_task.success:
|
||||
existing_task.stopped = task['stopped']
|
||||
existing_task.result = task['result']
|
||||
existing_task.success = task['success']
|
||||
existing_task.save()
|
||||
else:
|
||||
Task.objects.create(id=task['id'],
|
||||
name=task['name'],
|
||||
func=task['func'],
|
||||
hook=task.get('hook'),
|
||||
args=task['args'],
|
||||
kwargs=task['kwargs'],
|
||||
started=task['started'],
|
||||
stopped=task['stopped'],
|
||||
result=task['result'],
|
||||
group=task.get('group'),
|
||||
success=task['success']
|
||||
)
|
||||
except Exception as e:
|
||||
logger.error(e)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user