2012-02-14 3 views
3

Я использую среду исполнения Python 2.7 с NDB из 1.6.2 SDK в Google App Engine.BadRequestError: приложение s ~ myapphr не может получить доступ к данным приложения dev ~ myapphr. Зачем?

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

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

происходящие из этого кода:

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

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

Что происходит?

ответ

3

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

3

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

+0

спасибо. То, что меня смутило, заключалось в том, что я назвал свою версию разработки dev о производстве и подумал, что с ней что-то связано. – Dan

+0

Также обратите внимание, что вы можете установить это --default_partition в «Info ...» в контекстном меню, используя GoogleAppEngineLauncher. – Bemmu

+3

Обратите внимание, что это [устарело с v1.7.6] (https://developers.google.com/appengine/docs/python/tools/old_devserver). – OJFord

Смежные вопросы