커서를 내 앱에 적용하려하지만, 문서가 충분히 명확하지 않습니다. 마지막 결과가 반환 된 후 커서 http://code.google.com/appengine/docs/python/datastore/queries.html#Query_Cursors"커서"를 올바르게 이해하는 방법
에 대한 구글의 설명은 커서의 위치는 결과 목록의 위치로 정의된다. 커서는 목록의 상대 위치가 아닙니다 (오프셋이 아닙니다). 결과에 대한 인덱스 스캔을 시작할 때 데이터 저장소가 점프 할 수있는 마커입니다. 쿼리의 결과가 커서 사용 사이에서 변경된 경우 쿼리는 커서 뒤에 결과에서 발생하는 변경 사항 만 알립니다. 쿼리의 커서 위치 앞에 새 결과가 나타나면 커서를 가져온 후 결과가 반환 될 때 새 결과가 반환되지 않습니다. 마찬가지로 엔티티가 더 이상 쿼리의 결과가 아니지만 커서 앞에 나타난 경우 커서 뒤에 나타나는 결과가 변경되지 않습니다. 반환 된 마지막 결과가 결과 집합에서 제거되면 커서는 다음 결과를 찾는 방법을 여전히 알고 있습니다.
제 생각에 쿼리 결과는 항상 기본 순서 (예 : __ key __)로 반환됩니다. 그런 다음 커서를 지정하면이 커서 앞에 모든 결과를 필터링하는 필터가 추가됩니다. Google이 과거에 언급 한 것처럼. 그게 사실이야? http://code.google.com/appengine/articles/paging.html
또 다른 질문 __ __ 키와 고유하지 않은 속성
페이징, 반복 또는 작업과 함께 사용할 수 설정 커서 수 있습니까? 몇 가지 이유로이 기능은 올바르게 작동하지 않습니다. 일반적으로 반복 프로세스에서 "쿼리를 찾을 수 없습니다"가 생성 될 수 있습니다.
이 내 예입니다
people = Person.all().filter("age > ", 30)
if cursor:
people.with_cursor(cursor)
try:
for person in people: # query not found
cursor = people.cursor()
except DeadlineExceededError:
taskqueue.add(url="/people", params= {"cursor", cursor})