From 5a25bfe343004f7542f96186e64b852d8289f71c Mon Sep 17 00:00:00 2001 From: caoqianming Date: Sat, 11 Feb 2023 17:50:49 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BC=80=E5=90=AF=E5=85=B3=E9=97=AD=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/opm/services.py | 17 +++++++++-------- apps/opm/views.py | 9 +-------- 2 files changed, 10 insertions(+), 16 deletions(-) diff --git a/apps/opm/services.py b/apps/opm/services.py index adefa884..cc798a51 100644 --- a/apps/opm/services.py +++ b/apps/opm/services.py @@ -103,11 +103,7 @@ def opl_start(ticket: Ticket): def start_mtask(opl: Opl): - if opl.mtask_uid: - # 先关闭 - close_mtask(opl.mtask_uid) - opl.mtask_uid = None - opl.save() + close_mtask(opl) op = opl.operation mtask_uid = None vc_codes = [] @@ -122,13 +118,18 @@ def start_mtask(opl: Opl): return dict(vc_codes=vc_codes, mtask_uid=mtask_uid) -def close_mtask(task_id: str): +def close_mtask(opl: Opl): """关闭celery任务 """ from celery.app.control import Control from server.celery import app - celery_control = Control(app=app) - celery_control.revoke(task_id, terminate=True) + qs = TaskResult.objects.filter(task_args__contains=opl.id, status__in=['PENDING', 'RECEIVED', 'STARTED']) + if qs: + celery_control = Control(app=app) + for i in qs: + celery_control.revoke(i.task_id, terminate=True) + opl.mtask_uid = None + opl.save() def opl_end(ticket: Ticket): diff --git a/apps/opm/views.py b/apps/opm/views.py index e17ea1fe..a1cba795 100644 --- a/apps/opm/views.py +++ b/apps/opm/views.py @@ -128,14 +128,7 @@ class OplViewSet(CustomModelViewSet): 停止作业监控 """ obj = self.get_object() - if obj.mtask_uid: - close_mtask(obj.mtask_uid) - from django_celery_results.models import TaskResult - qs = TaskResult.objects.filter(task_args__contains=obj.id, status__in=['PENDING', 'RECEIVED', 'STARTED']) - for i in qs: - close_mtask(i.task_id) - obj.mtask_uid = None - obj.save() + close_mtask(obj) return Response()