【发布时间】:2013-06-27 09:24:03
【问题描述】:
我们正在尝试测试提到的写入限制异常约为 1 次写入/秒,以准备我们的代码(https://developers.google.com/appengine/docs/python/datastore/exceptions -> 超时)
所以我正在创建一个项目并使用循环计数更新它 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 异常的文档会很棒!有人吗?
【问题讨论】:
-
那么问题是什么?!
-
检查 appstats 幕后发生的事情...另外,我认为每个实体组的写入速度接近每秒 8 次(尽管“支持”每秒 1 次)。
-
问题是如何让数据存储区抛出其中一个超时异常(发生在许多并行写入上),以便查看应用程序满负荷时发生的情况开始乱了?
-
我认为 ~1/秒的限制只适用于交易。我不记得他们会为一个实体的更新率命名任何硬性限制。延迟调用在默认队列上运行,每个默认队列的速率为 5 个任务/秒。您可以尝试提高该比率。