GAE:从任务中汇总工作结果? (对于GAE查询性能问题)

时间:2014-11-05 14:44:55

标签: python performance google-app-engine google-cloud-datastore query-performance

哪些选项最适合跨越GAE的工作(在最新的时间范围内完成)?

  • 使用任务,将结果存储在memcache中,定期在请求中查询memcache并希望任务及时完成
  • 使用urlfetch来获取任务,错误处理和安全性的结果将会很痛苦。
  • 后端实例的使用? (似乎疯了)
  • 或JAVA实例(似乎完全疯了)

背景: 甚至不得不这样做是荒谬的。我需要提供10k数据存储项作为JSON。显然问题是Python需要花费大量时间来处理数据存储结果(Java看起来要快得多)。这很好地涵盖了: 2579614211509368和  21941954

方法: 由于软件方面没有任何优化(无法重写GAE),因此方法是跨越多个实例并聚合结果。

仅查询密钥并获取2k项块的查询游标表现相当不错,并且可以分离任务以将结果以2k块的形式获得。问题是如何最好地汇总结果。

1 个答案:

答案 0 :(得分:1)

这不是"荒谬"必须这样做:它是GAE提供的可扩展性的公认结果。如果您不喜欢为实现可扩展性而做出的权衡,那么您应该选择另一个平台。

还不清楚为什么你认为使用后端实例是"疯狂"。使用Java确实很奇怪,但这只是因为没有理由认为它会更好。

然而,有一种非常好的方法可以做到这一点,不涉及你提到的任何黑客,那就是使用mapreduce framework,这是为收集大量数据而明确制作的。