今朝、私の GAE アプリケーションはいくつかのエラー ログを生成しました:「これらのデータストア エンティティで競合が多すぎます。再試行してください。」私の考えでは、このタイプのエラーは、複数のリクエストが同じエンティティまたは同じエンティティ グループ内のエンティティを変更しようとした場合にのみ発生します。
このエラーが発生したとき、私のコードは新しいエンティティを挿入しています。よくわかりません。これは、新しいエンティティを作成できる速度に制限があるということですか?
モデル定義と呼び出しシーケンスの私のコードを以下に示します。
# model defnition
class ExternalAPIStats(ndb.Model):
uid = ndb.StringProperty()
api = ndb.StringProperty()
start_at = ndb.DateTimeProperty(auto_now_add=True)
end_at = ndb.DateTimeProperty()
# calling sequence
stats = ExternalAPIStats(userid=current_uid, api="eapi:hr:get_by_id", start_at=start_at, end_at=end_at)
stats.put() # **too much contention** happen here
それは私にとってかなり神秘的です。私はこの問題にどう対処するかを考えていました。何か提案があれば教えてください。