0

我有一個循環,我把大量實體進入數據存儲,是這樣的:在把許多實體在數據存儲中一次

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

我知道有關使用bulk uploader,但我必須這樣做從代碼內.. 我目前有什麼工作,只要極限不是那麼大(否則我會得到一個超過期限的錯誤,但這不是這個問題的範圍),我只是問是否有更好或更多有效的方法,因爲這看起來像一個醜陋的黑客攻擊,例如像所有的實體一個鏡頭,而不是循環等方法。

回答

7

您正在爲您存儲的每個實體執行數據存儲往返。相反,他們積累做單批放:

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

如果您還需要向上突破您的操作分成多個部分,使用任務隊列排隊工作的每個塊作爲單獨的任務。

相關問題