【发布时间】:2015-03-27 09:02:04
【问题描述】:
我运行许多任务来获取一些信息并进行处理。每个任务运行后,我都有一个整数,它表示我得到了多少部分信息。 我想得到从不同任务收到的这些整数的总和。
目前我使用memcache来存储sum:
def update_memcache_value(what, val, how_long=86400):
value_old = get_memcache_value(what)
memcache.set('system_'+what, value_old+val, how_long)
def get_memcache_value(what):
value = memcache.get('system_'+what)
if not value:
value = 0
return int(value)
update_memcache_value 在每个任务中被调用(经常不止一次)。但看起来那里的数据经常在白天丢失。我可以使用 NDB 来存储相同的数据,但它需要大量的写入操作。有没有更好的方法来存储相同的数据(计数器)?
【问题讨论】:
-
不是 NDB 回写吗?所以我不确定你能做什么会更有效率。每次更新值时都无法避免写入 somewhere,如果要刷新并且需要持久性,则无法避免写入 cache->mem。
-
使用 appengine-pipelines 和/或 appengine-mapreduce。
-
@DmitrySadovnychyi,我不会面临与 Pipelines (github.com/GoogleCloudPlatform/appengine-pipelines/wiki/Python) 使用相同的 NDB 限制吗?
-
我认为降低成本的目标应该是在单个任务中处理尽可能多的数据。
-
你的问题太宽泛了。有很多方法可以计算计数器,但它们涉及不同的方法。请编辑您的问题以专注于一种方法。
标签: python google-app-engine google-cloud-datastore app-engine-ndb