Firebase 云函数调用两次

Pro*_*ted 6 firebase google-cloud-platform google-cloud-pubsub google-cloud-functions

我们有一个设置了发布/订阅触发器的云功能。

函数被调用 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
Run Code Online (Sandbox Code Playgroud)

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

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

Oli*_*ver 1

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

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

  • 你能解决这个问题吗?我对 .onPublish 也有类似的问题... (2认同)