首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以编程方式激活firebase云功能中的重试

以编程方式激活firebase云功能中的重试
EN

Stack Overflow用户
提问于 2019-04-10 07:17:45
回答 2查看 966关注 0票数 4

我正在部署firebase云功能,以便通过持续部署来监听我们的防火墙中的变化。

我只能找到激活重试手动的方法。这与裁谈会的做法背道而驰。

查看普通的gcp云函数,在部署时可以给出重试标志。但我在firebase-cli或firebase-function接口(2.1.0)中找不到类似的选项。

对如何解决这个问题有什么建议吗?卡斯滕

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-10 08:45:23

目前没有使用Firebase CLI进行部署的类似选项。

这是Firebase团队正在做的事情,所以请继续关注更新。

票数 3
EN

Stack Overflow用户

发布于 2020-11-15 19:54:15

您可以手动使用GCloud控制台在Firebase函数中启用重试。在firebase-functions 3.10.0中添加了以编程方式重新尝试基于触发器的函数(请参阅变化量g和关联的拉请求)。

由于这在PR或docs中并不是完全显而易见的,下面是语法的一个快速示例:

代码语言:javascript
复制
export const myFirebaseFunc = functions
  .runWith({
    failurePolicy: {
      retry: {},
    },
    memory: '512MB',
    timeoutSeconds: 60,
  })
  .firestore.document('/path/to/some/doc')
  .onCreate(async (snap, context) => {
   /* do stuff */
 })

在撰写这篇文章时,失败策略似乎只是打开或关闭。因此,这是等价的。

代码语言:javascript
复制
export const myFirebaseFunc = functions
  .runWith({
    failurePolicy: true,
    memory: '512MB',
    timeoutSeconds: 60,
  })
  .firestore.document('/path/to/some/doc')
  .onCreate(async (snap, context) => {
   /* do stuff */
 })

一些注意事项:

  • 您还必须使用--force进行部署
  • 只能在触发函数上启用重试,而不能启用http调用函数。
  • 不建立一些保障措施是愚蠢的。请在7天内重试策略,并支付与任何其他函数调用一样的费用,因此,如果您有一些未处理的错误,它可能会重复运行整整一周。您可以使用context.eventTimestamp来知道第一次尝试何时开始。

阅读这个:https://firebase.google.com/docs/functions/retries,并确保您的函数是幂等的。

同时,也很难发现应该返回什么来强制重试或避免重试。触发的Firebase函数必须返回承诺.(参见此维德)

如果下列情况下,启用重试的Firebase函数将重试:

  • 它还了一个被拒绝的承诺
  • 抛出异常
  • 或者功能超时

这意味着,如果您遇到一个您知道最终不会通过重试解决自身的错误(即您希望停止函数执行而不是重试),则可以返回Promise.resolve({message: 'some message'});

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55606808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档