0

我们正在尝试测试提到的写入限制异常大约为 1 写入/秒,以准备我们的代码(https://developers.google.com/appengine/docs/python/datastore/exceptions -> Timeout)

所以我正在创建一个项目并使用循环计数通过任务更新它 10k 次,通过循环更新它 10k 次......它似乎不会触发异常,尽管每秒写入量应该足够高(我记得类似每秒超过一次写入变得至关重要)。

总是一样的:当你想要它们时,事情不会破裂;)。

class Message(ndb.Model):
    text = ndb.StringProperty()
    count = ndb.IntegerProperty()

#defined in seperate file
class DeferredClass(object):
    def put(self, id, x):
        msg = Message.get_by_id(id)
        msg.count = x
        try:
            msg.put()
        except:
            logging.error("error putting the Message")
            logging.error(sys.exc_info()[0])


msg = Message(text="TestGreeting", count=0)
key = msg.put()
id = key.id()
test = DeferredClass()

for x in range(10000):
    deferred.defer(test.put, id, x)
for x in range(10000):
    msg.count = x
    try:
        msg.put()
    except:
        logging.error("error putting the Message")
        logging.error(sys.exc_info()[0])

self.response.out.write("done")

PS:我们知道文档是针对 db 的,代码是 ndb ......基本的限制应该仍然存在......另外:关于 ndb 异常的文档会很棒!任何人?

4

1 回答 1

1

使用具有 350 个/任务/秒的速率限制的非默认任务队列导致 20 个实例被启动并出现大量超时异常......感谢 Steinrücken 先生!

例外是 google.appengine.api.datastore_errors.Timeout,这与 db 包记录的相同 - 所以那里没有 ndb 额外内容。

PS:我们的想法是在我们的缓存处理类中捕获异常作为数据存储过载的标志,并自动为该项目设置阴影......监视任务一分钟并在不需要时再次禁用阴影......

于 2013-06-28T11:39:55.077 回答