2015-11-04 83 views
1

我写了一个运行良好的云功能。云代码功能运行两次

有时候这个函数对同一个用户执行不止一次(我确信只有一个请求是从客户端的android应用程序请求的)。

经过一些调试后,我发现如果连接不好,会发生这个问题。我可能会或可能不会是正确的。

如何克服这样的问题?

+0

您有多确定您的功能只能从应用中调用一次?如果您的云功能失败,例如超时,会发生什么? –

+0

我100%确定,因为它工作正常。然而,在低连接时,这个问题正在发生。我在想这个问题是否与网络库实际上触发了我们提出的一个请求的多个请求有关,以防万一其中一个请求失败。你怎么看? @MoNazemi – SafiS

+0

我不认为网络库会针对请求触发两次。顺便说一句,你从哪里调用云功能?一个iOS应用程序? –

回答

1

在评论中,我也不相信客户端SDK会在不良连接上复制Cloud Function调用。预期的行为是让他们在客户端抛出网络相关的异常,而不是再次调用它。如果Cloud Function成功运行并且客户端只能无法获得结果,则会出现问题。

我能想到下面的解决方案,并提供有关云功能本身并没有更多的细节:

  1. 尽量使功能幂等 - 这意味着即使运行两次,最终结果是相同,假设相同的输入/参数。

  2. 缓存的结果和手动油门功能 - 这是比较复杂的,如果网络问题仍然存在,你不能变通解决消除功能的副作用时,才需要。您将不得不创建另一个类来缓存函数的结果(可能由参数控制),并返回相同的结果,而无需计算和副作用。