在App Engine中,Node云任务处理程序的超时时间默认为60秒。如果任务在超时前完成,可以提前退出任务以节省资源。如果任务需要更长的时间才能完成,您可以自定义超时时间。
要自定义超时时间,您需要在app.yaml
文件中添加runtime
和timeout
字段。以下是一个示例app.yaml
文件:
runtime: nodejs14
manual_scaling:
instances: 1
env_variables:
# 添加其他环境变量
automatic_scaling:
min_instances: 1
max_instances: 2
handlers:
- url: /tasks/.*
script: auto
# 添加其他处理程序
task_handlers:
- url: /my-task
script: auto
login: admin
timeout: 120s # 自定义超时时间为120秒
在上面的示例中,/my-task
路径的任务处理程序具有自定义的超时时间为120秒。您可以根据需要调整超时时间。
请注意,超时时间的最大限制为10分钟(600秒)。超过这个时间限制的任务将被强制中止。
此外,您还可以在任务处理程序中使用setTimeout()
函数来设置任务的超时时间。以下是一个使用setTimeout()
的示例代码:
app.post('/my-task', (req, res) => {
// 设置超时时间为120秒
const timeout = 120000;
const timeoutId = setTimeout(() => {
// 超时处理逻辑
res.status(500).send('Task timed out');
}, timeout);
// 执行任务逻辑
// ...
clearTimeout(timeoutId); // 在任务完成前清除超时定时器
res.sendStatus(200); // 返回成功状态码
});
在上面的示例中,我们使用setTimeout()
函数设置了任务的超时时间为120秒。当超时发生时,任务将返回500状态码并发送"Task timed out"消息。在任务完成之前,我们使用clearTimeout()
函数清除超时定时器。
请根据您的具体需求选择适合的解决方法。