我编写了一个管理应用程序,该应用程序具有在多个谷歌日历中放置一堆事件的功能。
在我的电脑上一切正常。但是这个应用程序的主要用户有一个非常糟糕的网络连接。更明显的是,对不同服务器的ping在23毫秒到2000毫秒之间变化,数据包会丢失。
除了增加timout之外,我的方法是为每个API调用使用一个自己的线程,并在出现连接错误时调用。
在这一点上,我陷入了困境。现在,每个事件都已创建。不幸的是,不是一次,而是至少一次。所以一些事件被多次上传。
我已经尝试过将它们分组为批处理请求,但谷歌不希望在一个批处理请求中出现多个日历上的事件。
我希望我的处境很清楚,有人能为我找到解决方案。
我会首先尝试说服"主要用户"获得更好的网络连接。
如果这是不可能的,我会更改代码,使其具有以下逻辑:
// Current version
createEvent(parameters)
// New version
while (queryEvent(parameters) -> no event) {
createEvent(parameters)
}
具有适当的超时和重试计数器。这个想法是实现一些额外的逻辑,使日历中事件的创建成为幂等的。(这可能需要在客户端为每个事件生成一个唯一的标识符,以便您可以可靠地查询事件。)