2014-04-10 53 views
0

我在Google的AppEngine上運行Python腳本。 python腳本非常基本。每次腳本運行我需要它來更新時間戳SOMEWHERE所以我可以記錄和跟蹤腳本上次運行的時間。這將允許我根據腳本最後一次運行的時間來執行邏輯,等等。在腳本結尾,我會將時間戳更新爲當前時間。在appengine中存儲單個時間戳的最簡單方法

使用谷歌的NBD似乎是矯枉過正,但它似乎也是將任何數據存儲在AppEngine中的唯一方法。有沒有更好/更簡單的方法來做我想要的?

+0

爲什麼它矯枉過正。具有單個字段和已命名密鑰的單個模型。你不能簡單得多。你也得到交易。 –

回答

4

這真的很簡單,而不是矯枉過正..任何其他的東西都會在appengine中過度使用 - 嘗試使用低級API,GCS或將其存儲在其他服務中將需要更多工作並引入複雜度級別潛在的不可靠性將會變慢。另外,任何不將日期時間對象作爲日期時間對象存儲/檢索的機制(即文本文件)意味着您需要將字符串解析爲日期,從而創造更多的工作。

定義它

class TimeStamp(ndb.Model): 
    timestamp = ndb.DatetimeProperty(auto_now=True) 

創建它。

TimeStamp(key_name="TIMESTAMP").put() 

無需閱讀即可更新。

TimeStamp(key_name="TIMESTAMP").put() 

閱讀並更新。

ts = TimeStamp.get_by_id("TIMESTAMP") 
ts.put() 
+0

不知道爲什麼有些人無所作爲-1如此完成+1 –

+0

相同。一個優雅的答案。 –

0

解決這個問題的另一種方法是找到memcache。這很容易。儘管應該注意到memcache可以在任何時候被清除,所以NDB可能是更好的解決方案。

設置時間戳:

memcache.set( 「時間戳」,CURRENT_TIMESTAMP)

然後,讀取時間戳:

memcache.get( 「時間戳」 )

+1

Matt,yep memcache是​​另一種策略。如果您有高頻更新,並且信息很重要,通常最好使用,寫出到數據存儲區。正如你所指出的那樣,它可以被刪除,並且即使在幾分鐘內也可以很快發生。我不相信這是一種「存儲」需要依賴的數據的好方法。 –