node.js - Cloud Functions 何时重试?
问题描述
为我的云功能启用重试后,我想知道它会重试的所有情况。
这部分对我来说似乎是矛盾的。因此,我假设我不理解它。
我认为以下暗示启用了“失败重试”的功能也将重试致命错误:
Cloud Functions 不理解不应重试的致命错误
但是,Promise.reject
在这种情况下捕获错误并使用有什么意义呢?
我试图用它Promise.reject
来取消我的云功能的重试,但是,这并没有发生。
return Promise.reject(..) // will retry
throw Error() // will retry
如果未重新部署该功能,两者都将重试一周。对我来说,这
似乎是致命的错误,并且 Promise.reject
都会重试,但是,文档说:
如果您支持致命错误,您应该相应地修改您的代码
文档中这一部分的意义是什么,我现在应该做什么?
解决方案
如果函数最终产生任何类型的错误,Cloud Functions 将重试该函数。这包括被拒绝的承诺、抛出的异常或超时。
如果您不希望函数重试,则捕获所有错误并返回成功的承诺。如果您知道错误在以后的重试中永远不会消失(例如,错误的输入值),那么不要安排重试它。否则,您只需为所有无效的重试付费。
重试的全部意义在于处理存在临时错误的情况,例如网络问题。因此,您应该确保您的函数仅在预期函数最终会在未来某个时间成功的情况下产生错误。
如果您发现文档令人困惑,请随意使用文档任何页面上的“发送反馈”按钮。
推荐阅读
- unicode - 为什么贵宾犬和浴缸,而不是下标大写字母?(Julia 中的 Unicode)
- javascript - setState 和图标不能一起工作 - React Native
- angular - 根据Angular 9材料表中的值在一列中显示多个数据数组
- ubuntu-18.04 - WSL手动安装服务尚未启动
- php - 当我尝试使用 Facebook Graph API SDK 安排带有图像的帖子时返回未知错误
- python - 调用类方法的方法... n 层深
- php - json_encode($list, 15) - 什么是 15?
- python - 我可以使用百分比随机化 Python 中的列表吗?
- java - 我可以从非 UI 应用程序获得 Youtube 报告 API 的授权吗?
- php - 将 Word 文件转换为 Twig 并保留 Twig 指令