Python Google应用程序引擎请求日志是重复的,时间差很小

Python Google应用程序引擎请求日志是重复的,时间差很小,python,google-app-engine,https,Python,Google App Engine,Https,通过查看一个Python项目的GAE日志,我发现了一些重复的条目,甚至是三次重复的条目,它们的时间戳差别很小 这些请求是由只发送唯一数据的iPhone设备触发的,因此这种复制似乎极不可能来自手机。特别是考虑到请求之间的时间差异 00:53:32.139 POST 200 93B 1.6 s APPNAME/1.2 CFNetwork/758.4.3 Darwin/15.5.0 /logData 00:53:32.142 POST 200 93B 930 ms APPNAME/1.2 CFNet

通过查看一个Python项目的GAE日志,我发现了一些重复的条目,甚至是三次重复的条目,它们的时间戳差别很小

这些请求是由只发送唯一数据的iPhone设备触发的,因此这种复制似乎极不可能来自手机。特别是考虑到请求之间的时间差异

00:53:32.139 POST 200 93B 1.6 s  APPNAME/1.2 CFNetwork/758.4.3 Darwin/15.5.0 /logData
00:53:32.142 POST 200 93B 930 ms APPNAME/1.2 CFNetwork/758.4.3 Darwin/15.5.0 /logData
00:53:32.279 POST 200 93B 835 ms APPNAME/1.2 CFNetwork/758.4.3 Darwin/15.5.0 /logData
请求相同(源ip、头等),内部数据相同:

{u'version': 1.2, u'data': u'some data', u'user': u'0a9b....0a57'}
而实际的问题是“这怎么可能”


复制日志之间的间隔如此之短,有什么解释吗?

谷歌存储的所有数据都是三倍的,因此即使其中一个节点发生故障,也始终有备份

这是一个很大的因素,因为随着数据的增长 丢失数据变得非常真实。大多数公司都是这样处理的 在中的不同数据中心制作数据的多个副本 不同的地点。谷歌也很明显地复制了重要的 正如GFS的论文所建议的,数据至少是3倍

--


因此,将日志复制到不同的服务器上也就不足为奇了。正如您所观察到的,这些服务器的时间戳可能略有不同。对我来说,问题是为什么要获得日志项的所有三个副本。

发生这种情况是因为异步任务:当iPhone从其位置管理器获得位置时,当操作系统有空闲时间运行代码时,应用程序向
/logData
端点发出HTTP请求。同时,用户活动会导致另一个HTTP请求。只有在收到数据确认(HTTP响应200)后,才会删除来自局部变量的数据。因此,由于它们几乎同时被触发——它们都进入了数据库和GAE日志。

这不是相同的数据,延迟和时间戳是不同的,就像同一来源发出的相同请求3次一样。