perf: 5进程同时进行

This commit is contained in:
archer
2023-04-04 21:41:55 +08:00
parent b13c3c4da5
commit 943abbe0fb
4 changed files with 19 additions and 9 deletions

View File

@@ -11,9 +11,17 @@ import { VecModelDataPrefix } from '@/constants/redis';
import { customAlphabet } from 'nanoid'; import { customAlphabet } from 'nanoid';
const nanoid = customAlphabet('abcdefghijklmnopqrstuvwxyz1234567890', 12); const nanoid = customAlphabet('abcdefghijklmnopqrstuvwxyz1234567890', 12);
export async function generateQA(next = false): Promise<any> { export async function generateQA(): Promise<any> {
if (global.generatingQA && !next) return; // 最多 5 个进程
global.generatingQA = true; if (global.generatingQA >= 5) {
console.log('QA 最多5个进程');
return;
}
global.generatingQA += 1;
setTimeout(() => {
generateQA();
}, 3000);
try { try {
const redis = await connectRedis(); const redis = await connectRedis();
@@ -24,7 +32,7 @@ export async function generateQA(next = false): Promise<any> {
if (!dataItem) { if (!dataItem) {
console.log('没有需要生成 QA 的数据'); console.log('没有需要生成 QA 的数据');
global.generatingQA = false; global.generatingQA = 0;
return; return;
} }
@@ -128,16 +136,17 @@ export async function generateQA(next = false): Promise<any> {
text: systemPrompt.content + text + response.rawContent text: systemPrompt.content + text + response.rawContent
}); });
generateQA(true); generateQA();
generateVector(true); generateVector(true);
} catch (error: any) { } catch (error: any) {
console.log(error); console.log(error);
console.log('生成QA错误:', error?.response); console.log('生成QA错误:', error?.response);
setTimeout(() => { setTimeout(() => {
generateQA(true); generateQA();
}, 5000); }, 5000);
} }
global.generatingQA--;
} }
/** /**

View File

@@ -27,6 +27,7 @@ export async function connectToDatabase(): Promise<void> {
global.mongodb = null; global.mongodb = null;
} }
global.generatingQA = 0;
generateQA(); generateQA();
// generateAbstract(); // generateAbstract();
generateVector(); generateVector();

View File

@@ -34,7 +34,7 @@ export const sendCode = (email: string, code: string, type: `${EmailTypeEnum}`)
}; };
mailTransport.sendMail(options, function (err, msg) { mailTransport.sendMail(options, function (err, msg) {
if (err) { if (err) {
console.log('error->', err); console.log('send email error->', err);
reject('邮箱异常'); reject('邮箱异常');
} else { } else {
resolve(''); resolve('');
@@ -53,7 +53,7 @@ export const sendTrainSucceed = (email: string, modelName: string) => {
}; };
mailTransport.sendMail(options, function (err, msg) { mailTransport.sendMail(options, function (err, msg) {
if (err) { if (err) {
console.log('error->', err); console.log('send email error->', err);
reject('邮箱异常'); reject('邮箱异常');
} else { } else {
resolve(''); resolve('');

View File

@@ -4,7 +4,7 @@ import type { RedisClientType } from 'redis';
declare global { declare global {
var mongodb: Mongoose | string | null; var mongodb: Mongoose | string | null;
var redisClient: RedisClientType | null; var redisClient: RedisClientType | null;
var generatingQA: boolean; var generatingQA: number;
var generatingAbstract: boolean; var generatingAbstract: boolean;
var generatingVector: boolean; var generatingVector: boolean;
var QRCode: any; var QRCode: any;