1
私は、シャードされたカウンターで異なる種類のクリック数をカウントする、Googleのアプリケーションエンジン用のPythonでアプリケーションを開発しています。Google Appengineのシャードカウンターで時間単位のクリックを保存
私の問題は、すべてのクリックの総計だけでなく、クリック数から統計を分割することです。それを達成するために
一つの方法は、破片のインデックスにタイムスタンプを追加することです:
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以上の倍遅くなることだろう。
結果をキャッシュする良い方法はありますか? 1時間に1度が過ぎると、カウンターはそれ以上変わることはありません。新しいオブジェクトのすべてのクリックを保存するという欠点はありますか?
hmm ...重い負荷でもタスクキューが機能しますか? 100リクエスト/秒以上? – Ragnar
タスクキューを使用し、時間別レポートモデルを追加して解決しました。ありがとう! – Ragnar