Skip to main content
 首页 » 编程设计

python之在 App Engine 中查询随时间变化的百分比

2025年05月04日25zfyouxi

我的网站索引来自不断更新的提要的时间序列数据。网站用户应该能够配置当数据中特定属性的值在特定时间段内发生一定百分比变化时触发的警报。

示例:假设我们正在跟踪用户拥有的 Twitter 关注者数量。这是(简化的)数据提要的样子:

日期,关注者

  • 10:00, 1
  • 10:01, 2
  • 10:02, 2
  • 10:03, 15
  • ...

警报:

  • 如果“关注者”在过去 1 小时内增加了 15%,请通知我。
  • 如果“关注者”在过去 40 分钟内减少了 10%,请通知我。

只有一个简单的数据馈送。将(希望)定义数以千计的警报。这些警报中有许多可能是相似的,但很难估计会有多少独特的警报。

编辑:之前忘记提及这一点,但关注者的数量经常变化(每分钟)。

使用数据存储区和其他 App Engine 工具实现这种机制的最优雅方式是什么?警报应该相对实时地触发(+/- 几分钟)。

谢谢!

请您参考如下方法:

重写 put 意味着计算将在每次写入时完成,这可能是低效的。如果您允许用户设置这些警报,您最终可能会得到表示警报的数据存储对象,这意味着每次评估警报时都会有获取或查询。

一个选项是任务:当数据馈送发生变化时,启动一个任务来评估警报。至少,这将允许初始数据馈送写入请求更快地完成。但是,如果数据馈送变化很快,您可能有很多任务,并且最近的数据变化会使其中大部分任务变得不必要。

也许最好的选择是 cron任务,每几分钟运行一次。如果需要,您可以根据负载更改 cron 作业的时间,并且如果您有很多用户/警报,以高度并行的方式进行处理会更可行。