查询响应大小限制appengine?

时间:2010-11-10 01:35:39

标签: google-app-engine google-cloud-datastore

Appengine docs提到了对实体大小和批量获取请求(db.get())的1Mb限制: http://code.google.com/appengine/docs/python/datastore/overview.html

对于单个fetch()调用,查询返回的所有实体的总大小是否也有限制?

示例查询:

db.Model.all().fetch(1000)

更新:从1.4.0开始,批量获取限制已被删除!

  • 数据存储批量获取/放置/删除操作的大小和数量限制 被删除了。个别实体仍然限制为1 MB,但您的应用程序 可以 批量尽可能多的实体一起作为整体的get / put / delete调用 数据存储截止日期将允许。

3 个答案:

答案 0 :(得分:6)

Theres no longer a limit关于查询可以返回的实体数量,但是当您实际检索/迭代实体时,适用相同的实体大小限制。这只会一次只在一个实体上;它不是对查询返回的所有实体的总大小的限制。

底线:只要您没有单个实体> 1Mb你应该对查询没问题。

答案 1 :(得分:3)

我在生产中尝试过,你的查询确实可以超过1 Mb。我停止测试的总响应大小约为20 Mb。

from app import models

# generate 1Mb string
a = 'a'
while len(a) < 1000000:
    a += 'a'

# text is a db.TextProperty()
c = models.Comment(text=a)
c.put()


for c in models.Comment.all().fetch(100):
    print c

输出:

<app.models.Comment object at 0xa98f8a68a482e9f8>
<app.models.Comment object at 0xa98f8a68a482e9b8>
<app.models.Comment object at 0xa98f8a68a482ea78>
<app.models.Comment object at 0xa98f8a68a482ea38>
....

答案 2 :(得分:2)

是的,有尺寸限制; quotas and limits部分明确声明db API调用有1兆字节的限制。

如果批次中实体的大小超过1兆字节,您将无法使用db.get(list_of_keys)。同样,如果批次中实体的总大小超过1兆字节,您将无法放置批次。

已删除1,000个实体限制,但(目前)您需要确保批次的总大小不超过1兆字节。

相关问题