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()