Google App Engine и Django Sandbox: похоже, что Shell и Web используют разные хранилища данных? - PullRequest
3 голосов
/ 15 апреля 2010

Я новичок как в Django, так и в Google App Engine, и использую «песочницу» в OSX10.6 с GoogleAppEngineLauncher. У меня есть базовое приложение «книжный магазин», которое запускается из учебника из книги OReilly «Программирование Google App Engine».

Вот ошибка: если я добавляю новый объект в хранилище данных через веб-интерфейс, то он читается через веб-интерфейс, но не появляется, если я запрашиваю хранилище данных через оболочку. И наоборот: если я добавлю объект в оболочку, я смогу прочитать его из оболочки, но он не появится в веб-интерфейсе.

Связанное с этим любопытство: все данные исчезают из обоих хранилищ данных при перезагрузке компьютера.

Любые мысли или теории приветствуются. Спасибо!

= Т =

Ответы [ 2 ]

0 голосов
/ 13 июля 2012

Правильно, python manage.py приведет вас к другому экземпляру приложения (и другому хранилищу данных), чем Launcher. Если вам нужен интерфейс командной строки для вашего приложения, см. Как активировать интерактивную консоль в App Engine? или запустить сервер разработки исключительно с python manage.py runserver, а не с Launcher, и продолжить используйте manage.py shell.

Меня укусило то же самое удаление хранилища данных. По какой-то причине App Engine необходимо тщательно закрыть магазин - вам нужно нажать «стоп» (или нажать ctrl-c, если он запускается из команды dev_appserver.py, обычно в linux), чтобы правильно сохранить хранилище данных на диск. Если вы выключите компьютер перед тем, как его закрыть, хранилище данных будет удалено.

0 голосов
/ 16 апреля 2010

Если вы используете удаленную API-оболочку и указываете на экземпляр, который запускаете на своей машине, вы должны получить то же хранилище данных. Неясно, как вы обращаетесь к своему приложению через «оболочку», но, похоже, вы создаете для этого второй экземпляр.

Данные исчезают из хранилища данных при перезагрузке компьютера, поскольку по умолчанию файл хранилища данных создается в / tmp; вы можете указать другое местоположение (такое, которое система не очищает для вас при перезагрузке) для него при запуске dev_appserver.py.

...