2013-06-27 31 views
0

我們試圖測試提到的寫入限制例外約爲每秒1個寫入,以準備我們的代碼(https://developers.google.com/appengine/docs/python/datastore/exceptions - >超時)數據存儲寫入限制測試 - 試圖中斷應用程序引擎,但它不會中斷;)

因此,我創建一個項目,並通過循環計數10k次通過任務和10k次循環更新它...似乎不會觸發例外,儘管每秒的寫入數應該高足夠的(我記得像每秒多於一次的寫入變得非常重要)。

總是一樣:當你想要他們的時候,事情不會中斷;)。

class Message(ndb.Model): 
    text = ndb.StringProperty() 
    count = ndb.IntegerProperty() 

#defined in seperate file 
class DeferredClass(object): 
    def put(self, id, x): 
     msg = Message.get_by_id(id) 
     msg.count = x 
     try: 
      msg.put() 
     except: 
      logging.error("error putting the Message") 
      logging.error(sys.exc_info()[0]) 


msg = Message(text="TestGreeting", count=0) 
key = msg.put() 
id = key.id() 
test = DeferredClass() 

for x in range(10000): 
    deferred.defer(test.put, id, x) 
for x in range(10000): 
    msg.count = x 
    try: 
     msg.put() 
    except: 
     logging.error("error putting the Message") 
     logging.error(sys.exc_info()[0]) 

self.response.out.write("done") 

PS:We're知道該文檔是db和代碼NDB ...基本的限制應該依然存在...另外:在NDB例外文件將是巨大的!任何人?

+0

那麼問題是什麼? – Lipis

+0

檢查appstats幕後發生的事情......另外,我認爲每個實體組的寫入時間接近8秒(儘管1秒鐘是「支持」)。 –

+0

問題是,如何才能讓數據存儲區拋出其中一個超時異常(發生在許多並行寫入操作中),以便查看應用程序處於滿載狀態並且事情開始變得混亂時發生了什麼? – thomasf1

回答

1

使用一個非默認的TaskQueue,速度上限爲350/tasks/sec,導致20個實例被激活,並有很多Timeout Exceptions ...感謝Steinrücken先生!

異常是google.appengine.api.datastore_errors.Timeout,它與db包中記錄的相同 - 因此在那裏沒有ndb extras。

PS:我們的想法是捕獲緩存處理類中的異常,作爲數據存儲過載的標誌並自動爲該項目設置陰影...在不需要時監控任務一分鐘,並重新開啓陰影...

相關問題