2014-04-10 117 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是​​另一种策略。如果您有高频更新,并且信息很重要,通常最好使用,写出到数据存储区。正如你所指出的那样,它可以被删除,并且即使在几分钟内也可以很快发生。我不相信这是一种“存储”需要依赖的数据的好方法。 –