BadRequestError: приложение s~myapphr не может получить доступ к данным приложения dev~myapphr. Почему?

Я использую среду выполнения Python 2.7 с NDB из SDK 1.6.2 в Google App Engine.

Я получаю следующую ошибку:

BadRequestError: приложение s~myapphr не может получить доступ к данным приложения dev~myapphr

Исходя из этого кода:

device = model.Key(urlsafe=device_id).get()

Я получаю доступ к своему приложению с сайта dev.myapp.appspot.com, который имеет псевдоним myapphr. device_id был создан в той же версии dev.myapphr.

Что здесь происходит?


person Dan    schedule 14.02.2012    source источник


Ответы (2)


сервер разработки имеет default_partition по умолчанию «dev», а в рабочей среде приложения HRD получают раздел «s». Если вы создадите ключ urlsafe на сервере разработки и сохраните его в виде строки, он не будет работать на рабочем сервере с другим разделом. способ сделать ключи переносимыми — сохранить их в ReferenceProperty с db или KeyProperty на ndb.

person johnlockwood    schedule 14.02.2012

Префикс, который вы там видите ("s~" и "dev~"), называется разделом. Вы можете использовать флаг --default_partition для dev_appserver.py, чтобы изменить префикс с «dev~» на «s~».

person schuppe    schedule 14.02.2012
comment
Спасибо. Меня смутило то, что я назвал свою разрабатываемую версию dev на производстве и подумал, что это как-то связано с этим. - person Dan; 14.02.2012
comment
Также обратите внимание, что вы можете установить этот --default_partition в Info... в контекстном меню при использовании GoogleAppEngineLauncher. - person Bemmu; 01.06.2012
comment
Обратите внимание, что это устарело, начиная с версии 1.7.6. - person OJFord; 19.09.2014