From 68c4cd5928a06737d39a43ed4d8d3cc4d0abe432 Mon Sep 17 00:00:00 2001 From: Eric Date: Tue, 19 Sep 2023 14:56:32 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BF=AE=E5=A4=8D=E5=8F=91=E5=B8=83?= =?UTF-8?q?=E6=9C=BA=E5=AE=89=E8=A3=85=E5=BA=94=E7=94=A8=E7=9A=84=E6=8A=A5?= =?UTF-8?q?=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/terminal/api/applet/host.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/apps/terminal/api/applet/host.py b/apps/terminal/api/applet/host.py index 7811312c1..a2016255a 100644 --- a/apps/terminal/api/applet/host.py +++ b/apps/terminal/api/applet/host.py @@ -1,3 +1,5 @@ +import uuid + from django.db import transaction from rest_framework import status from rest_framework import viewsets @@ -80,8 +82,12 @@ class AppletHostDeploymentViewSet(viewsets.ModelViewSet): objs = [model(host=host) for host in hosts_qs] applet_host_deployments = model.objects.bulk_create(objs) applet_host_deployment_ids = [str(obj.id) for obj in applet_host_deployments] - - task = run_applet_host_deployment_install_applet.delay(applet_host_deployment_ids, applet_id) - task_id = str(task.id) + task_id = str(uuid.uuid4()) model.objects.filter(id__in=applet_host_deployment_ids).update(task=task_id) + transaction.on_commit(lambda: self.start_install_applet(applet_host_deployment_ids, applet_id, task_id)) return Response({'task': task_id}, status=201) + + @staticmethod + def start_install_applet(applet_host_deployment_ids, applet_id, task_id): + run_applet_host_deployment_install_applet.apply_async((applet_host_deployment_ids, applet_id), + task_id=str(task_id))