我正在嘗試迭代大量的數據存儲記錄,目前大約有33萬個。從概念上講,每條記錄都有一行,一列和一個值,我遍歷記錄並構造一個矩陣,然後我將用它來進行計算。無法迭代大量的DataStore記錄
我得到的錯誤是:超時:數據存儲操作超時或數據暫時不可用。
[ADDED:請注意,我的問題不是應用程序引擎超時。作爲CRON工作運行,我有足夠的時間,數據存儲錯誤發生得比應用程序引擎超時更快。另外,我已經嘗試了其他問題中給出的答案,正如我在下面提到的那樣。]
錯誤發生在迭代運行超過100,000條記錄之後。
我當前的代碼,這是我過去諮詢相關的線程後寫道,是:
prodcauses_query = ProdCause.query(projection=['prod_id', 'value', 'cause']).filter(ProdCause.seller_id == seller_id)
for pc in prodcauses_query.iter(read_policy=ndb.EVENTUAL_CONSISTENCY, deadline=600):
### COPY DATA IN RECORD PC INTO A MATRIX
### row is prod_id, col is cause, value is value
有沒有什麼更好的辦法來做到這一點比ITER?有關batch_size或截止日期或read_policy的更好設置?
請注意,此過程在CRON作業中運行,因此如果花費很長時間才能完成此操作,則不會打擾到我。這個過程的其餘部分需要幾秒鐘的時間,最難的部分是讀取數據。
感謝您的任何想法!
許多現有的問題涵蓋了這一點。 DUP。 –
[Google App Engine超時?]的可能重複(http://stackoverflow.com/questions/7328582/google-app-engine-time-out) –