J'insère un ensemble d'enregistrements sur Google App Engine. Je les insère par lot pour éviter les exceptions d'échéance.Collision de transaction pour insertion séquentielle sur Google App Engine. Pourquoi?
Quand il y a un grand nombre d'enregistrements (par exemple 1K) Je reçois toujours un inattendu:
collision de transaction pour le groupe d'entités avec la clé
datastore_types.Key.from_path (u'GroupModel ', u'root', _app = u'txttomail '). Réessayer ...
Cette situation se produit toujours.
Dans un environnement local, cela fonctionne sans aucun problème.
Comment est-il possible d'avoir des collisions de transactions si j'utilise un processus séquentiel et que personne n'utilise le système entre-temps?
Voici le code que j'utilise pour batching:
def deferred_worker():
if next_chunk():
process_chunk()
deferred.defer(deferred_worker)
où, en * process_chunk() * Je fais 50 insertions dans la base de données
Comment insérez-vous 1 000 entités dans un lot? Il existe une limite de 500 entités (http://code.google.com/appengine/docs/python/datastore/overview.html#Quotas_and_Limits). Publiez du code, et dites-nous si vous faites quoi que ce soit en utilisant différé ou des tâches. –
Pouvez-vous poster votre code? –