Cloud Code 函数运行两次
Posted
技术标签:
【中文标题】Cloud Code 函数运行两次【英文标题】:Cloud Code function running twice 【发布时间】:2015-11-04 14:30:26 【问题描述】:我写了一个运行良好的云函数。
有时,同一用户会多次执行此功能(我确保客户端 android 应用只请求一个请求)。
经过一些调试,我注意到如果连接不好,就会出现这个问题。我可能是正确的,也可能是不正确的。
如何克服这样的问题?
【问题讨论】:
你有多确定你的函数只被你的应用调用一次?如果您的云功能失败(例如超时)会发生什么? 我 100% 确定,因为它工作正常。然而,在低连接时,这个问题正在发生。我在想这个问题是否与网络库实际上为我们发出的一个请求触发多个请求这一事实有关,以防其中一个失败另一个没有。你怎么看? @MoNazemi 我认为网络库不会为请求触发两次。顺便说一句,您从哪里调用云功能? ios 应用? 【参考方案1】:与 cmets 一样,我也不相信客户端 SDK 会在连接不良时复制 Cloud Function 调用。预期的行为是他们在客户端抛出与网络相关的异常,而不是再次调用它。如果 Cloud Function 运行成功,客户端无法取回结果,就会出现问题。
我可以想到以下解决方案,没有更多关于 Cloud Function 本身的详细信息:
尝试使函数具有幂等性 - 这意味着即使它运行两次,最终结果也是相同的,假设输入/参数相同。
缓存结果并手动限制函数 - 这更复杂,只有在网络问题仍然存在并且您无法消除函数的副作用时才需要.您必须创建另一个类来缓存函数的结果(可能由参数键入)并返回相同的结果,而不会产生计算和副作用。
【讨论】:
以上是关于Cloud Code 函数运行两次的主要内容,如果未能解决你的问题,请参考以下文章
将 JSON 数据从 Parse Cloud Code 返回到 Swift 中的可解码结构
在 iOS 应用程序中更新 PFObject 的密钥时,需要从 Parse Cloud Code 保存和登录时运行代码