通過給定實體ID,我將通過models = Model.get_by_id(id)
進行查詢。但是,我發現有些時候它不會收集結果。Google App Engine:替代方法get_by_id()
是否有任何替代或推薦的方法通過Google App Engine中的實體ID進行查詢,python?
通過給定實體ID,我將通過models = Model.get_by_id(id)
進行查詢。但是,我發現有些時候它不會收集結果。Google App Engine:替代方法get_by_id()
是否有任何替代或推薦的方法通過Google App Engine中的實體ID進行查詢,python?
該問題在2011-05-10(v1.5發佈日期)之後自行消失。不知道這個問題是相關的。
我沒有更改任何代碼,因爲get_by_id()在這幾天裏一直很好。除此之外,我添加了一個cron作業來每隔幾分鐘運行一次get_by_id(),並嘗試讓實例處於活動狀態。
從我的觀察,get_by_id()失敗,因爲它無法查詢數據存儲。
順便說一句,數據存儲的設置是主/從複製。
get_by_id()
如果傳遞的對象是對象的有效標識並且對象存在於數據存儲中,則始終獲取對象。
ID可以通過object.key.id
在templat
別人來給你總是有object.get(key).
如果Model.get_by_id(id)
回報None
,這表明你已經提供了無效的ID,而不是方法本身是靠不住的。
在系統停機的情況下,這種方法可能會失敗,但如果確實如此,您的調用會拋出數據存儲異常,而不會返回空的結果。
是的,問題是get_by_id(),而是傳遞無效密鑰或不正確處理異常。 – 2011-05-10 14:11:18
如果你正在用父級保存你的類實例,那麼get_by_id將不會返回該對象,而是將返回None,原因是該鍵沒有完成,因此也需要父鍵。我遇到了同樣的問題,並且很難找出屁股。
ico = Icons.get_by_id("3", parent = parentkey)
這將返回一個對象。 ;-)
你是什麼意思與「有些時候它不會返回正確的結果」? – systempuntoout 2011-05-10 06:43:33
通過運行models = Model.get_by_id(id),有時它不會返回任何內容,有時它完美地工作,「id」是一個常量整數。 – Peter 2011-05-10 07:02:34
[Google應用引擎:get_by_id不可靠?]可能的重複(http://stackoverflow.com/questions/5169917/google-app-engine-get-by-id-not-reliable) – geoffspear 2011-05-10 13:17:06