Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在谷歌appengine中使用分片计数器存储每小时点击次数_Python_Google App Engine_Bigtable_Sharding - Fatal编程技术网

Python 在谷歌appengine中使用分片计数器存储每小时点击次数

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

我正在用python为google app engine开发一个应用程序,它使用切分计数器计算不同类型的点击次数

我的问题是,我想从点击中得到按小时划分的统计数据,而不仅仅是所有点击的总和

实现这一点的一种方法是向碎片索引添加时间戳:

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个请求/秒?我通过使用任务队列和添加小时报告模型解决了这个问题。谢谢