16

今朝、私の 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

それは私にとってかなり神秘的です。私はこの問題にどう対処するかを考えていました。何か提案があれば教えてください。

4

2 に答える 2

5

データストアの競合とそれを回避する方法について知っておく必要があるすべてのことを次に示します: https://developers.google.com/appengine/articles/scaling/contention?hl=en (削除済み)

更新: 同じエンティティ グループで 1 秒あたりの書き込み制限に達しています。デフォルトでは、1 秒あたり 1 回の書き込みです。 https://cloud.google.com/datastore/docs/concepts/limits

ソース: https://stackoverflow.com/a/47800087/1034622

于 2013-06-25T22:14:42.573 に答える