diff --git a/apps/dataset/serializers/document_serializers.py b/apps/dataset/serializers/document_serializers.py index 03109fa4d..aa61b9469 100644 --- a/apps/dataset/serializers/document_serializers.py +++ b/apps/dataset/serializers/document_serializers.py @@ -977,7 +977,10 @@ class DocumentSerializers(ApiMixin, serializers.Serializer): self.is_valid(raise_exception=True) document_id = self.data.get('document_id') QuerySet(Document).filter(id=document_id).update(status=Status.queue_up) - generate_related_by_document_id.delay(document_id, model_id, prompt) + try: + generate_related_by_document_id.delay(document_id, model_id, prompt) + except AlreadyQueued as e: + raise AppApiException(500, "任务正在执行中,请勿重复下发") diff --git a/apps/dataset/serializers/paragraph_serializers.py b/apps/dataset/serializers/paragraph_serializers.py index 8e2a8e60b..6614d712a 100644 --- a/apps/dataset/serializers/paragraph_serializers.py +++ b/apps/dataset/serializers/paragraph_serializers.py @@ -9,6 +9,7 @@ import uuid from typing import Dict +from celery_once import AlreadyQueued from django.db import transaction from django.db.models import QuerySet from drf_yasg import openapi @@ -733,7 +734,10 @@ class ParagraphSerializers(ApiMixin, serializers.Serializer): paragraph_id_list = instance.get("paragraph_id_list") model_id = instance.get("model_id") prompt = instance.get("prompt") - generate_related_by_paragraph_id_list.delay(paragraph_id_list, model_id, prompt) + try: + generate_related_by_paragraph_id_list.delay(paragraph_id_list, model_id, prompt) + except AlreadyQueued as e: + raise AppApiException(500, "任务正在执行中,请勿重复下发")