在appengine上查询响应大小限制?
Appengine文档提到了对实体大小和批量获取请求(db.get())的1Mb限制:http://code.google.com/appengine/docs/python/datastore/overview.html
单个fetch()调用的查询返回的所有实体的总大小是否也有限制?
示例查询:
db.Model.all().fetch(1000)
更新:从1.4.0开始批量获取限制已被删除!
Theres不再限制查询可以返回的实体数量,但是在实际检索/迭代实体时适用相同的实体大小限制。 然而,这只会在一个单一的实体上; 它不是查询返回的所有实体的总大小的限制。
底线:只要你没有一个大于1Mb的单个实体,你应该可以查询。
我在生产环境中尝试过,并且确实可以超过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>
....
是的,有一个大小限制; 配额和限制部分明确指出db API调用有1兆字节的限制。
如果批次中实体的总大小超过1兆字节,则无法使用db.get(list_of_keys)。 同样,如果批次中实体的总大小超过1兆字节,您将无法进行批处理。
1,000个实体的限制已被删除,但是(目前)您需要确保批次的总大小不到1兆字节。
链接地址: http://www.djcxy.com/p/23213.html上一篇: Query response size limit on appengine?
下一篇: Benchmarks for various Google App Engine Datastore operations?