python - 在 Google AppEngine 中使用分片计数器存储每小时的点击次数

标签 python google-app-engine bigtable sharding

我正在为谷歌应用程序引擎开发一个Python应用程序,它使用分片计数器来计算不同类型的点击。

我的问题是我想获得按小时划分的点击统计信息,而不仅仅是所有点击的总和。

实现此目的的一种方法是向分片索引添加时间戳:

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 倍以上。

有没有好的方法来缓存结果?我的意思是,一旦过了一个小时,计数器就不会再改变了。将每次点击保存在新对象中是否有缺点?

最佳答案

您的解决方案将会起作用 - 只需使用任务队列将分片记录聚合成漂亮的、易于报告的摘要记录即可。

关于python - 在 Google AppEngine 中使用分片计数器存储每小时的点击次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6943471/

相关文章:

python - 在 Google App Engine 上用 Python 验证 android 应用内购买消息的签名

python - 使用 python 检查 dev_appserver 是否在本地主机上运行

SQL 查询 : inner joins optimization between big tables

python - 使用 'utf-8' 编码 unicode 仅显示非 ascii 的字节字符串

android - 将 Google App Engine 工具安装到 Eclipse (ADT)

mysql - 如何在大表中找到具有重复字段的行?

python - NDB .order 返回空结果

python - 如何返回 bool 值列表以查看一个列表的元素是否在另一个列表中

python - pip 轮和覆盖范围 : command not found error

python - 如何在 Django 中获取 Post 数据表单类别?