Mettendo molte entità nel datastore in una sola volta
-
26-10-2019 - |
Domanda
Ho un ciclo in cui ho messo un sacco di entità nel datastore, qualcosa di simile:
for line in open(file):
if count >= limit:
break
elif count >= offset:
prop1 = XXX
prop2 = YYY
MyEntity(prop1=XXX, prop2=YYY).put()
count += 1
Lo so sull'utilizzo del massa uploader , ma io bisogno di fare questo all'interno del codice .. Quello che ho attualmente funziona finché il limite non è così grande (altrimenti ottengo un errore di scadenza superata, ma questo non è lo scopo di questa domanda), io sto solo chiedendo se c'è un approccio migliore o più efficiente per fare questo, come questo sembra un brutto hack, per esempio un approccio come mettere tutte le entità in un solo colpo, invece di loop o giù di lì.
Soluzione
Si sta facendo un archivio dati di andata e ritorno per ogni entità di memorizzare. Invece, li accumulano e fare un unico put lotto:
to_write = []
for line in open(file):
#...
to_write.append(MyEntity(prop1=XXX, prop2=YYY)
db.put(to_write)
Se hai ancora bisogno di rompere il vostro funzionamento fino in più parti, utilizzare Task code per accodare ogni pezzo di lavoro come un'attività separata.