diff --git a/lib/ai/rmbg/service.ts b/lib/ai/rmbg/service.ts index 97438fe0b..0916f9150 100644 --- a/lib/ai/rmbg/service.ts +++ b/lib/ai/rmbg/service.ts @@ -63,6 +63,7 @@ const AOS_MAX_RESOLUTION = 4096; const AOS_CREATE_TIMEOUT_MS = 120_000; const AOS_POLL_TIMEOUT_MS = 60_000; const AOS_DOWNLOAD_TIMEOUT_MS = 60_000; +const IMAGE_URL_FETCH_TIMEOUT_MS = 60_000; async function createThumbnail(buffer: Buffer, mimeType: string): Promise { try { @@ -499,14 +500,16 @@ function getModelId(provider: RmbgProvider) { export async function fetchImageBufferFromUrl(imageUrl: string): Promise { try { - const imageResponse = await fetch(imageUrl); - if (!imageResponse.ok) { - throw new RmbgServiceError( - `无法获取图片: ${imageResponse.status} ${imageResponse.statusText}`, - 400 - ); - } - return Buffer.from(await imageResponse.arrayBuffer()); + return await withTimeout(async (signal) => { + const imageResponse = await fetch(imageUrl, { signal }); + if (!imageResponse.ok) { + throw new RmbgServiceError( + `无法获取图片: ${imageResponse.status} ${imageResponse.statusText}`, + 400 + ); + } + return Buffer.from(await imageResponse.arrayBuffer()); + }, IMAGE_URL_FETCH_TIMEOUT_MS); } catch (error) { if (error instanceof RmbgServiceError) { throw error;