python - Google App Engine NDB - Cursor on query working on local dev but not in production -


i have issue. call query cursor set cursor() first time around. fetch 50 items query

qry = cls.query(cls.store == store_id, cls.user != exclude_user, cls.active == true, cls.offline == false).order(cls.user, cls._key, -cls.created) 

i return qry calling class , run following fetch

result, next_cursor, more = qry.fetch_page(pagination, start_cursor=cursor) 

this works no problem, following cursor , pass client per docs:

client_params['next_page'] = next_cursor.urlsafe() 

i have logged cursor make sure same on return call server, is

i thus:

cursor = cursor(urlsafe=page) 

however second attempt retrieve next 50 or less items results in following error:

badrequesterror: cursor position outside range of original query 

now whole process works fine on local development machine not in production

i suspect trouble comes cls.user != exclude_user query parameter.

from limitations of cursors (yes, known it's in superseded db documentation, i'm pretty sure applies ndb - same limitations are present in java well, they're on datastore side, not on client library side):

  • because != , in operators implemented multiple queries, queries use them not support cursors.

to confirm try drop query parameter.

as why happens in production - development server emulation doesn't cover details.


Comments

Popular posts from this blog

android - InAppBilling registering BroadcastReceiver in AndroidManifest -

python Tkinter Capturing keyboard events save as one single string -

sql server - Why does Linq-to-SQL add unnecessary COUNT()? -