【问题标题】:Google Cloud Function Not Terminating Past Max Function Duration谷歌云功能没有终止超过最大功能持续时间
【发布时间】:2018-02-08 18:26:57
【问题描述】:

在时间限制部分下的Google Cloud Functions 文档中,它说最大持续时间应为 540 秒。之后,云功能应该终止。

“最大函数持续时间 - 函数在强制终止之前可以运行的最长时间 - 540 秒”

我对 http-triggers 进行了一些测试,发现如果在 6 秒内没有发回响应,函数就会终止。

我还运行了另一个测试,它立即发回响应并每分钟异步记录一条消息。

目前 40 分钟后,它仍在记录消息。

这里是sn-p的代码:

function recursiveCallback (n) {
    console.log(`MarkTest: Callback Pass ${n}`);
    setTimeout(function () {
        recursiveCallback(n + 1);
    }, 1000 * 60);
}

exports.test_func = function (req, resp, callback) {
    console.log('Sending Response. response');
    resp.send('');
    console.log('Response Sent.');
    console.log('Starting Async Polling');
    recursiveCallback(0);
    console.log('test_func End')
};

这是一个错误,还是故意的?

【问题讨论】:

  • 在最长持续时间之后能够继续运行您的函数似乎是一个错误。为了安全起见,您应该遵守指定的限制。 Nathan 发现了与您相同的行为并将其报告给 Google。有关更多详细信息,请参阅他的帖子。 blog.liftsecurity.io/2017/04/11/…
  • 根据我的经验,http 触发的函数不会在 6 秒后终止。如果再次发生这种情况,请考虑提交错误报告。

标签: node.js google-cloud-platform google-cloud-functions


【解决方案1】:

1) 我没有看到 6 秒的 HTTP 超时,你能提供任何重现的步骤吗?

2) 当前(2018 年 2 月)Cloud Functions 不会在超时时间过去后强制停止函数,如果仍有异步任务在运行; CPU 会减速,但该函数可能会运行(未定义的)时间。最初的想法是让较小的清理/后台工作在停止函数之前完成。 但是,我们可能会更改此行为以在超时时停止函数,因为当前的行为可能会给开发人员造成混淆,因为无法保证或记录该函数可以运行多长时间,并且在什么情况。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-14
    • 2023-01-25
    • 2021-11-26
    • 2017-09-26
    • 2021-06-10
    • 2020-10-25
    • 2019-05-14
    相关资源
    最近更新 更多