2016-08-25 81 views
0

我們正在從數據存儲中獲取命名空間的列表,該數據存儲的數量高達30k。Google Appengine數據存儲超時異常

每天運行提取命名空間的cron。但有一天它工作正常,有一天它拋出數據存儲超時異常。

com.google.appengine.api.datastore.DatastoreTimeoutException:所述數據存儲 操作超時,或者數據是暫時 不可用。

相關代碼:

DatastoreService ds = DatastoreServiceFactory.getDatastoreService(); 
FetchOptions options = FetchOptions.Builder.withChunkSize(150); 
Query q = new Query(Entities.NAMESPACE_METADATA_KIND); 

for (Entity e : ds.prepare(q).asIterable(options)){ 
    // A nonzero numeric id denotes the default namespace; 
    // see Namespace Queries, below 
    if (e.getKey().getId() != 0){ 
     continue; 
    }else{ 
     namespaces.add(e.getKey().getName()); 
    } 
} 

可能是什麼問題?

回答

1

根據官方文檔:

DatastoreTimeoutException被拋出時,數據存儲操作時間 出來。當您試圖放置,獲取或刪除太多實體或具有太多屬性的實體時,或者數據存儲區 過載或遇到問題時,可能會發生這種情況。

這意味着數據存儲有麻煩與您的請求。嘗試處理該錯誤,如:

import com.google.appengine.api.datastore.DatastoreTimeoutException;  
    try { 
     // Code that could result in a timeout 
    } catch (DatastoreTimeoutException e) { 
     // Display a timeout-specific error page 
    } 
相關問題