Google Cloud Function超时设置不起作用

时间:2018-11-05 09:33:04

标签: google-cloud-platform timeout google-cloud-firestore google-cloud-functions gcloud

即使超时设置为540秒,我也无法让Google Cloud Function运行超过60秒!有什么建议吗?

我将部署时的超时标志设置为--timeout = 540,并且由于540 sec超时设置出现在GCP WEB UI中,所以我知道设置可以通过。我还尝试通过GCP WEB UI将超时手动编辑为540。但是无论如何,在大约62000 ms之后,我仍然得到DEADLINE_EXCEEDED。

我已经尝试使用pub / sub和https方法作为func触发器,但是仍然会在〜60s时获得过早的函数超时。

我正在使用以下这些func设置运行最新的CLI:

  • 触发:http / pubsub(均经过测试,结果相同)
  • availableMemoryMb:2048
  • 运行时:nodejs6
  • 状态:有效
  • 超时:540秒

感谢您的投入!

Br Markus

3 个答案:

答案 0 :(得分:0)

我已经使用documentation code for delay并执行了与您的规格相同的Cloud Function。在文档中,执行被延迟了120000 ms(2分钟)。我对其进行了编辑,并将其设置为500000 ms。这加上CF执行所需的正常时间,将达到所需的执行时间(大约9分钟)。如果您添加540000来测试代码,它将执行〜540025,并发生超时错误,因为该值本身超过了Cloud Function的超时限制,同时超过了9分钟的default maximum timeout limit of a Cloud Function

我也尝试使用此命令创建函数 gcloud functions deploy [FUNCTION_NAME] --trigger-http --timeout=540。 成功部署后,我按如下所示在GCP云功能UI中手动更新了代码

exports.timeoutTest = (req, res) => {
  setTimeout(() => {
    let message = req.query.message || req.body.message || 'Hello World today!';
    res.status(200).send(message);
    res.end();
  }, 500000); 
};

两次执行Cloud Function并返回状态代码200。这意味着您可以将超时设置为60秒以上,这是默认值。

如果您正确地修改了所有内容,但仍然存在此问题,建议您重新开始,创建一个新的CF,并使用我提供的文档链接。

答案 1 :(得分:0)

60秒超时不是由GCP云功能设置引起的。例如,如果这是Django / Gunicorn App,则超时来自在app.yaml中设置的gunicorn超时

entrypoint: gunicorn -t 3600 -b :$PORT project_name.wsgi

例如,这将使gunicorn超时3600秒。

答案 2 :(得分:0)

我相信我迟到了几年,但这是我的建议。

如果您在 gcp 控制台的测试选项卡中使用测试此功能按钮,它会在按钮之后显示:

<块引用>

在 Cloud Console 中进行测试有 60 秒的超时。请注意,这与功能配置中设置的限制不同。

我希望你修复它,这个答案可以在未来帮助别人。