Question

J'ai une boucle où j'ai mis beaucoup d'entités dans le datastore, quelque chose comme ceci:

for line in open(file):
    if count >= limit:
        break
    elif count >= offset:
        prop1 = XXX
        prop2 = YYY
        MyEntity(prop1=XXX, prop2=YYY).put()
    count += 1

Je sais que sur l'utilisation du vrac Uploader, mais je besoin de le faire à partir du code .. Ce que je fonctionne actuellement aussi longtemps que la limite est pas si grand (sinon je reçois une erreur dépassé limite, mais ce n'est pas la portée de cette question), je demande seulement s'il y a une meilleure approche ou plus efficace pour ce faire, comme cela semble être une vilaine entaille, par exemple une approche comme mettre toutes les entités d'un seul coup au lieu de boucle ou ainsi.

Était-ce utile?

La solution

Vous faites un datastore aller-retour pour chaque entité que vous stockez. Au lieu de cela, les accumuler et faire une seule vente par lots:

to_write = []
for line in open(file):
  #...
  to_write.append(MyEntity(prop1=XXX, prop2=YYY)
db.put(to_write)

Si vous avez encore besoin de casser votre opération jusqu'à en plusieurs parties, utilisez Queues Tâche pour chaque morceau de enqueue travail comme une tâche distincte.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top