# app/tasks.py, 可以复用的task 改这个文件记得重启 Celery!!! import ast from celery import shared_task from .models import RetrieverTask, UploadFile, KeywordParagraph from .tools.keyword_find import util_keyword_find @shared_task def start_retriever_job(task_id): current_task = RetrieverTask.objects.get(task_uuid=task_id) task_keywords = ast.literal_eval(current_task.task_keywords) # 将字符串转换为list # print(task_keywords) for each in current_task.attachment.all(): if not each.is_checked: result_dict = util_keyword_find(each.file_path, task_keywords) UploadFile.objects.filter(file_id=each.file_id).update(is_checked=True) # 更新is_checked字段 KeywordParagraph.objects.bulk_create( [KeywordParagraph(related_file=each, keyword=para_keyword, paragraph=paragraph) for paragraph, para_keyword in zip(result_dict['find_list'], result_dict['paragraph_keyword'])]) # 批量创建KeywordParagraph对象 elif each.is_checked: continue RetrieverTask.objects.filter(task_uuid=task_id).update(task_status=True) return task_id