如何增加 Vercel Serverless 函数的超时限制

问题描述 投票:0回答:1

我在 NextJS 项目上有一个 API 端点,需要超过 60 秒才能运行。我使用的是 Pro Vercel 计划,但由于某种原因无法增加超时限制。

在端点本身我已经尝试过

export const maxDuration = 300
export const dynamic = 'force-dynamic'

这似乎没有做任何事情,我还尝试在顶层(在

vercel.json
之上)添加一个
/src
文件,如下所示:

{
    "functions": {
        "pages/api/**": {
            "memory": 3008,
            "maxDuration": 300
        },
    }
}

这又不起作用了。我梳理了文档(主要是here)以及一些线程(一个示例),但没有一个有帮助。

我正在运行 NextJs 版本

13.5.6
,我绝对是专业计划,并且 Node v18,我做错了什么?我真的不确定还能尝试什么。

javascript next.js timeout serverless vercel
1个回答
0
投票

您所做的似乎是 Pags Router 方式和 App Router 方式的混合。尝试像下面的示例一样进行操作:

使用页面路由器 (

/pages/api/my-function/handler.ts
):

export const config = {
  maxDuration: 5, // 5 seconds
};

export default function handler(
  request: NextApiRequest,
  response: NextApiResponse,
) {
  response.status(200).json({});
}

使用应用程序路由器 (

/app/api/my-function/route.ts
):

export const maxDuration = 5; // 5 seconds
export const dynamic = 'force-dynamic';

export function GET(request: Request) {
  return new Response('{}', { status: 200 });
}

如果您想在使用 Vercel 时覆盖整个项目的函数的最大持续时间,您可以在

vercel.json
中完成(我认为这仅对 App Router 有效):

{
  "functions": {
    "app/api/**/*": {
      "maxDuration": 5
    }
  }
}

您可以在官方文档上阅读有关这一切的更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.