在App Engine中存储单个时间戳的最简便方法

0 投票
2 回答
671 浏览
提问于 2025-04-18 02:17

我在谷歌的AppEngine上运行一个Python脚本。这个脚本非常简单。每次脚本运行时,我需要在某个地方更新一个时间戳,这样我就可以记录和跟踪脚本上次运行的时间。这让我可以根据脚本上次运行的时间来做一些逻辑判断等等。在脚本结束时,我会把时间戳更新为当前时间。

使用谷歌的NBD(云数据库)似乎有点过于复杂,但它似乎也是在AppEngine上存储任何数据的唯一方法。有没有更好或更简单的方法来实现我想要的功能呢?

2 个回答

0

我找到的另一种解决办法是使用memcache。这非常简单。不过需要注意的是,memcache随时可能被清空,所以使用NDB可能是更好的选择。

首先,设置时间戳:

memcache.set("timestamp", current_timestamp)

然后,要读取这个时间戳:

memcache.get("timestamp")

4

其实这真的很简单,完全没有必要搞得那么复杂。在应用引擎上,使用其他方法会显得过于繁琐,比如低级别的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()

撰写回答