Python 在谷歌appengine中使用分片计数器存储每小时点击次数
我正在用python为google app engine开发一个应用程序,它使用切分计数器计算不同类型的点击次数 我的问题是,我想从点击中得到按小时划分的统计数据,而不仅仅是所有点击的总和 实现这一点的一种方法是向碎片索引添加时间戳:Python 在谷歌appengine中使用分片计数器存储每小时点击次数,python,google-app-engine,bigtable,sharding,Python,Google App Engine,Bigtable,Sharding,我正在用python为google app engine开发一个应用程序,它使用切分计数器计算不同类型的点击次数 我的问题是,我想从点击中得到按小时划分的统计数据,而不仅仅是所有点击的总和 实现这一点的一种方法是向碎片索引添加时间戳: def txn(): index = random.randint(0, config.num_shards - 1) shard_name = code + str(index) # + timestamp without seconds count
def txn():
index = random.randint(0, config.num_shards - 1)
shard_name = code + str(index) # + timestamp without seconds
counter = ClickCounter.get_by_key_name(shard_name)
if counter is None:
counter = ClickCounter(key_name=shard_name, code=code)
counter.click += 1
counter.put()
db.run_in_transaction(txn)
问题是,一个月内计算所有碎片的速度要慢700多倍
有没有一种缓存结果的好方法?我的意思是,一个小时过去了,柜台就不会再变了。保存新对象中的每次单击是否有缺点?您的解决方案会起作用-只需使用任务队列将您的分片记录聚合为友好的、报告友好的摘要记录即可。您的解决方案会起作用-只需使用任务队列将您的分片记录聚合为友好的、报告友好的摘要记录即可,随时准备简要记录。。。。即使负载很重,任务队列也能工作吗?超过100个请求/秒?我通过使用任务队列和添加小时报告模型解决了这个问题。谢谢隐马尔可夫模型。。。即使负载很重,任务队列也能工作吗?超过100个请求/秒?我通过使用任务队列和添加小时报告模型解决了这个问题。谢谢