0

파이썬, ndb 및 데이터 저장소를 사용합니다. 내 모델 ("이벤트")에는 다음 속성이 있습니다.GAE 데이터 저장소 새 항목을 폴링하는 방법

created = ndb.DateTimeProperty (auto_now_add = True).

이벤트는 때때로 저장되며 때로는 1 초 이내에 여러 번 저장됩니다.

동일한 이벤트를 두 번 가져 오지 않고 "새 이벤트를 폴링"하고 새 이벤트가없는 경우 빈 결과를 얻고 싶습니다. 그러나 다시 폴링하면 나에게 새로운 이벤트가 생길 수 있습니다.

나는 Cursors을 보았습니다. 그러나 첫 번째 쿼리가 끝나면 새로운 이벤트를 폴링하는 데 어떻게 든 사용할 수 있는지 모르겠습니다. "next_cursor"는 데이터의 (현재) 끝에 도달하면 None입니다.

은 마지막으로 "만든"날짜 시간-속성과 다음 배치 작업을 얻기 위해 그것을 사용하지만, 그것은 단지 초 해상도를 사용하고, 그래서 순서는

내가 만들어야합니다 .. 망쳐 얻을 수있는 수신 유지 내 이 이벤트에 대한 자신의 트랜잭션, 증분 카운터?

답변

7

예, 커서를 사용하는 것이 유효한 옵션입니다. 심지어이 link은 Java 문서에서 나온 것으로 python에도 유효합니다. 두 번째 단락은 다음과 같습니다.

커서의 흥미로운 응용 프로그램은 보이지 않는 변경 사항에 대해 엔티티를 모니터링하는 것입니다. 앱이 엔티티가 변경 될 때마다 현재 날짜와 시간으로 타임 스탬프 속성을 설정하면 타임 스탬프 속성으로 정렬 된 쿼리를 사용하여 오름차순으로, 데이터 저장소 커서로 엔티티가 결과 목록의 끝으로 이동 한 시점을 확인할 수 있습니다 . 엔터티의 타임 스탬프가 업데이트되면 커서가있는 쿼리가 업데이트 된 엔터티를 반환합니다. 쿼리가 마지막으로 수행 된 이후로 엔티티가 업데이트되지 않은 경우 결과가 반환되지 않고 커서가 이동하지 않습니다.

+0

동일한 문서뿐만 아니라 파이썬 할 수 있습니다 :. https://cloud.google.com/appengine/ docs/python/datastore/queries # Python_Cursors_and_data_updates –

0

편집 : Prospective search has been shut down on December 1, 2015

다른 접근 방식은 미래의 검색에게 문서

에서

https://cloud.google.com/appengine/docs/python/prospectivesearch/

를 사용하는 것보다는 폴링보다 "유망 검색하는 귀하의 응용 프로그램을 허용하는 쿼리 서비스 실시간 데이터 스트림에 대한 검색어와 일치하는 제시된 모든 문서를 들어, 미래의 검색 문서를 일치하는 모든 등록 된 쿼리의 ID를 반환 "

+0

예상 검색어는 이제 비추천으로 2015 년 12 월 1 일에 삭제됩니다. https://cloud.google.com/appengine/docs/deprecations/prospective_search –