fix: 修复向量模型服务未起,重新向量问答一直显示排队中。

This commit is contained in:
shaohuzhang1 2024-09-23 17:27:29 +08:00 committed by shaohuzhang1
parent f4a3883be2
commit 90d59301fa

View File

@ -6,7 +6,7 @@
@date2024/8/19 14:13 @date2024/8/19 14:13
@desc: @desc:
""" """
import datetime
import logging import logging
import traceback import traceback
from typing import List from typing import List
@ -17,7 +17,7 @@ from django.db.models import QuerySet
from common.config.embedding_config import ModelManage from common.config.embedding_config import ModelManage
from common.event import ListenerManagement, UpdateProblemArgs, UpdateEmbeddingDatasetIdArgs, \ from common.event import ListenerManagement, UpdateProblemArgs, UpdateEmbeddingDatasetIdArgs, \
UpdateEmbeddingDocumentIdArgs UpdateEmbeddingDocumentIdArgs
from dataset.models import Document from dataset.models import Document, Status
from ops import celery_app from ops import celery_app
from setting.models import Model from setting.models import Model
from setting.models_provider import get_model from setting.models_provider import get_model
@ -26,10 +26,15 @@ max_kb_error = logging.getLogger("max_kb_error")
max_kb = logging.getLogger("max_kb") max_kb = logging.getLogger("max_kb")
def get_embedding_model(model_id): def get_embedding_model(model_id, exception_handler=lambda e: max_kb_error.error(
model = QuerySet(Model).filter(id=model_id).first() f'获取向量模型失败:{str(e)}{traceback.format_exc()}')):
embedding_model = ModelManage.get_model(model_id, try:
lambda _id: get_model(model)) model = QuerySet(Model).filter(id=model_id).first()
embedding_model = ModelManage.get_model(model_id,
lambda _id: get_model(model))
except Exception as e:
exception_handler(e)
raise e
return embedding_model return embedding_model
@ -59,7 +64,14 @@ def embedding_by_document(document_id, model_id):
@param model_id 向量模型 @param model_id 向量模型
:return: None :return: None
""" """
embedding_model = get_embedding_model(model_id)
def exception_handler(e):
QuerySet(Document).filter(id=document_id).update(
**{'status': Status.error, 'update_time': datetime.datetime.now()})
max_kb_error.error(
f'获取向量模型失败:{str(e)}{traceback.format_exc()}')
embedding_model = get_embedding_model(model_id, exception_handler)
ListenerManagement.embedding_by_document(document_id, embedding_model) ListenerManagement.embedding_by_document(document_id, embedding_model)
@ -71,7 +83,6 @@ def embedding_by_document_list(document_id_list, model_id):
@param model_id 向量模型 @param model_id 向量模型
:return: None :return: None
""" """
print(document_id_list)
for document_id in document_id_list: for document_id in document_id_list:
embedding_by_document.delay(document_id, model_id) embedding_by_document.delay(document_id, model_id)