Firebase云功能调用了两次

时间:2018-04-21 15:15:34

标签: firebase google-cloud-platform google-cloud-functions google-cloud-pubsub

我们设置了一个带有pub / sub触发器的云功能。

调用该函数topic(NAME).onPublish()

如果在寒冷时调用该函数,它总是运行两次。

Function execution took 284 ms, finished with status: 'ok' METHOD_NAME METHOD_ID
Received message from pub sub METHOD_NAME METHOD_ID
Function execution started METHOD_NAME METHOD_ID

Function execution took 24271 ms, finished with status: 'ok' METHOD_NAME METHOD_ID
Received message from pub sub METHOD_NAME METHOD_ID
Function execution started METHOD_NAME METHOD_ID

之后所有未来的消息只运行一次,直到函数再次变冷。

这是因为第一次调用需要很长时间才能完成,超时会导致它再次运行吗?有什么方法可以防止这种情况吗?

1 个答案:

答案 0 :(得分:0)

启动时间几乎肯定是问题所在。要验证这一点,请尝试以下方法:

  1. 注释掉函数的一部分直到快速,看看问题是否消失(如果可以,请使用timeit模块在本地终端中计时)
  2. 增加Acknowledgement Deadline秒(订阅时);默认为10因此很容易成为问题;尝试20,40等
  3. 确保第一次运行时,该函数花费的时间少于函数的Timeout值(默认为60秒 - 不太可能是问题)