gpt4 book ai didi

node.js - 执行耗时 60006 毫秒,完成状态为 : 'timeout'

转载 作者:太空宇宙 更新时间:2023-11-04 03:02:38 29 4
gpt4 key购买 nike

如果您在本地运行一个像这样的简单示例:

export async function runTimeout(req, res) {
// console.log('Request:\n\n', req);
return new Promise(async (resolve, reject) => {
await timeout(80000);
resolve();
});
res.status(200).send('Timeout complete');
}

function timeout(ms) {
return new Promise((resolve) => setTimeout(resolve, ms));
}

使用命令:

firebase serve --only functions

您将看到每次都会超时 60 秒,根据 firebase github 问题列表,localhost 的默认值现在应该为 9 分钟(这是最大值),因此无需配置它。有谁知道为什么我在 60 秒时超时,而无法完成完整的 80 秒(如本例所示)或更长?

错误信息是:

info: Execution took 62033 ms, finished with status: 'timeout' info: Execution took 62043 ms, finished with status: 'crash' error: Something went wrong with the function! error: Error: Can't set headers after they are sent. at validateHeader (_http_outgoing.js:491:11) at ServerResponse.setHeader (_http_outgoing.js:498:3) at ServerResponse.header (/Users/hackintosh/.nvm/versions/node/v8.11.2/lib/node_modules/firebase-tools/node_modules/express/lib/response.js:767:10) at ServerResponse.send (/Users/hackintosh/.nvm/versions/node/v8.11.2/lib/node_modules/firebase-tools/node_modules/express/lib/response.js:170:12) at ServerResponse.json (/Users/hackintosh/.nvm/versions/node/v8.11.2/lib/node_modules/firebase-tools/node_modules/express/lib/response.js:267:15) at ProxyServer.Supervisor._proxy.on (/Users/hackintosh/.nvm/versions/node/v8.11.2/lib/node_modules/firebase-tools/node_modules/@google-cloud/functions-emulator/src/supervisor/supervisor.js:107:14) at ProxyServer.emit (/Users/hackintosh/.nvm/versions/node/v8.11.2/lib/node_modules/firebase-tools/node_modules/eventemitter3/index.js:144:27) at ClientRequest.proxyError (/Users/hackintosh/.nvm/versions/node/v8.11.2/lib/node_modules/firebase-tools/node_modules/http-proxy/lib/http-proxy/passes/web-incoming.js:156:18) at emitOne (events.js:116:13) at ClientRequest.emit (events.js:211:7)

最佳答案

default timeout所有已部署功能的时间为 60 秒。当函数超时持续时间过去时,Cloud Functions 将限制函数上的资源,导致其终止,并将该错误保留在日志中。

您可以在 Cloud 控制台中配置由 Firebase CLI 部署的函数的超时(当前不在 Firebase 控制台中,也不是由 CLI 部署)。 maximum timeout是 540 秒(9 分钟)。

此外,您的函数中可能存在一个重大错误,可能会导致其行为与您的预期不同。您将从 runTimeout 返回一个 promise ,该 promise 在任何情况下都会阻止以下行 (res.send) 执行。如果您不向客户端发送响应,您的函数也会超时,因为发送的响应标志着函数执行的结束。

关于node.js - 执行耗时 60006 毫秒,完成状态为 : 'timeout' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50918966/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com