From 943abbe0fb9e42fa29d42b74d1716f3a4829e50a Mon Sep 17 00:00:00 2001 From: archer <545436317@qq.com> Date: Tue, 4 Apr 2023 21:41:55 +0800 Subject: [PATCH] =?UTF-8?q?perf:=205=E8=BF=9B=E7=A8=8B=E5=90=8C=E6=97=B6?= =?UTF-8?q?=E8=BF=9B=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/service/events/generateQA.ts | 21 +++++++++++++++------ src/service/mongo.ts | 1 + src/service/utils/sendEmail.ts | 4 ++-- src/types/index.d.ts | 2 +- 4 files changed, 19 insertions(+), 9 deletions(-) diff --git a/src/service/events/generateQA.ts b/src/service/events/generateQA.ts index f552f4c0f..9de713d35 100644 --- a/src/service/events/generateQA.ts +++ b/src/service/events/generateQA.ts @@ -11,9 +11,17 @@ import { VecModelDataPrefix } from '@/constants/redis'; import { customAlphabet } from 'nanoid'; const nanoid = customAlphabet('abcdefghijklmnopqrstuvwxyz1234567890', 12); -export async function generateQA(next = false): Promise { - if (global.generatingQA && !next) return; - global.generatingQA = true; +export async function generateQA(): Promise { + // 最多 5 个进程 + if (global.generatingQA >= 5) { + console.log('QA 最多5个进程'); + return; + } + global.generatingQA += 1; + + setTimeout(() => { + generateQA(); + }, 3000); try { const redis = await connectRedis(); @@ -24,7 +32,7 @@ export async function generateQA(next = false): Promise { if (!dataItem) { console.log('没有需要生成 QA 的数据'); - global.generatingQA = false; + global.generatingQA = 0; return; } @@ -128,16 +136,17 @@ export async function generateQA(next = false): Promise { text: systemPrompt.content + text + response.rawContent }); - generateQA(true); + generateQA(); generateVector(true); } catch (error: any) { console.log(error); console.log('生成QA错误:', error?.response); setTimeout(() => { - generateQA(true); + generateQA(); }, 5000); } + global.generatingQA--; } /** diff --git a/src/service/mongo.ts b/src/service/mongo.ts index f2bf070ae..3790c4743 100644 --- a/src/service/mongo.ts +++ b/src/service/mongo.ts @@ -27,6 +27,7 @@ export async function connectToDatabase(): Promise { global.mongodb = null; } + global.generatingQA = 0; generateQA(); // generateAbstract(); generateVector(); diff --git a/src/service/utils/sendEmail.ts b/src/service/utils/sendEmail.ts index a54797cb5..f0fb5aad9 100644 --- a/src/service/utils/sendEmail.ts +++ b/src/service/utils/sendEmail.ts @@ -34,7 +34,7 @@ export const sendCode = (email: string, code: string, type: `${EmailTypeEnum}`) }; mailTransport.sendMail(options, function (err, msg) { if (err) { - console.log('error->', err); + console.log('send email error->', err); reject('邮箱异常'); } else { resolve(''); @@ -53,7 +53,7 @@ export const sendTrainSucceed = (email: string, modelName: string) => { }; mailTransport.sendMail(options, function (err, msg) { if (err) { - console.log('error->', err); + console.log('send email error->', err); reject('邮箱异常'); } else { resolve(''); diff --git a/src/types/index.d.ts b/src/types/index.d.ts index 75fef8231..9590356d1 100644 --- a/src/types/index.d.ts +++ b/src/types/index.d.ts @@ -4,7 +4,7 @@ import type { RedisClientType } from 'redis'; declare global { var mongodb: Mongoose | string | null; var redisClient: RedisClientType | null; - var generatingQA: boolean; + var generatingQA: number; var generatingAbstract: boolean; var generatingVector: boolean; var QRCode: any;