아래의 200 개의 Documents and 1 DocUser를 실행하면 스크립트는 AppStats에 따라 약 5000ms가 소요됩니다. 마지막으로 6-51ms 걸리는 lastEditedBy (datastore_v3.Get)의 잠금이 발생할 때마다 데이터 저장소에 요청이 있음을 알 수 있습니다.데이터 저장소에 대한 요청 수를 줄이는 방법
내가 뭘 하려는지는 다른 엔티티에서 파생 된 여러 속성을 가진 많은 엔티티를 표시하는 것을 가능하게 만드는 것입니다. 많은 엔티티 (<000)가있을 수 없으며 관리자 인터페이스 이상의 것이므로 동시 사용자가 절대 없을 것입니다.
DocUser 엔티티를 캐싱하여 최적화하려고 시도했지만 데이터 저장소에 새로운 요청을하지 않고 위 쿼리에서 DocUser 키를 가져올 수 없습니다.
1) 이것이 의미있는가요? 내가 겪고있는 대기 시간이 정상입니까?
2) 데이터 저장소에 대한 추가 요청없이이 작업을 수행 할 수있는 방법이 있습니까?
models.py
class Document(db.Expando):
title = db.StringProperty()
lastEditedBy = db.ReferenceProperty(DocUser, collection_name = 'documentLastEditedBy')
...
class DocUser(db.Model):
user = db.UserProperty()
name = db.StringProperty()
hasWriteAccess= db.BooleanProperty(default = False)
isAdmin = db.BooleanProperty(default = False)
accessGroups = db.ListProperty(db.Key)
...
main.py
$out = '<table>'
documents = Document.all()
for i,d in enumerate(documents):
out += '<tr><td>%s</td><td>%s</td></tr>' % (d.title, d.lastEditedBy.name)
$out = '</table>'
왜 문서에서 루핑을하고 루프에서 매번 그 모든 내용을 가져 오는 중입니까? main.py에 문제가 있습니다. – mjibson
죄송합니다, 예제 코드에서 오류가 발생했습니다. 이제 해결되었습니다. –