Невозможно изменить сущности App Engine, кроме как в консоли администратора - PullRequest
0 голосов
/ 23 августа 2009

У меня возникла критическая проблема с моим хранилищем данных App Engine, и, похоже, он полностью невосприимчив к отладке: Я не могу изменять объекты после их создания.

Проблема даже присутствует при работе с консоли, определенной в app.yaml, которая не делится никаким кодом с моим основным приложением. Вот пример из консоли:

>>> foo = Topic(name='bar')

>>> foo.name

'bar'

>>> foo.name = 'foo'

>>> foo.name

'bar'

Такое же поведение влияет на все виды сущностей и все свойства в приложении. Сохранение объекта не имеет значения.

Я пытался вернуться к оборотам дней, недель и месяцев назад, и проблема все еще присутствует, хотя я определенно заметил бы это, если бы это было на самом деле недели и месяцы назад, так как оно ломает приложение логика. Он присутствует на разных машинах под управлением Ubuntu и OSX, а также на всех версиях приложений в рабочей среде и присутствует как минимум в одном другом приложении, которое я тестировал. Он все еще присутствует после очистки моего хранилища данных SDK, использования другого порта, очистки моего кэша памяти и очереди задач, переустановки SDK и всех других приемов отладки, о которых я могу подумать в отчаянии.

Единственное место, которое не затронуто, это консоль администрирования. Та же самая последовательность кода получает ожидаемый результат модифицированного объекта. Даже после того, как я импортирую все модули или классы, о которых я могу думать, это может вызвать проблемы, консоль все равно всегда работает как положено. Еще один признак того, что в моем коде нет ничего, что могло бы вызвать эту проблему (и что я не схожу с ума).

Я вполне уверен, что пару дней назад я мог изменять сущности из своего приложения так же, как и из консоли администратора. Ведь неизменяемые сущности не очень полезны.

Некоторые советы были бы очень, очень признательны. Боюсь, что эта проблема не позволит мне продолжить разработку, пока я не смогу ее исправить.

Ответы [ 2 ]

1 голос
/ 14 октября 2009

Какую консоль вы используете? Если он получен из shell.appspot.com или аналогичного, наиболее вероятно, что сохранение и восстановление глобальных параметров консоли при каждом запросе >>> вызывает эти проблемы.

Если вы используете интерактивную консоль на /_ah/admin/interactive (по умолчанию включено в dev_appserver.py), попробуйте поместить весь связанный код в окно ввода и выполнить его одним махом; это предотвратит любые эксперименты по сохранению / восстановлению, мешающие вашим экспериментам.

0 голосов
/ 23 августа 2009

Возможно, это глупый вопрос, но вы вызываете .put () после изменения ваших сущностей? Из вашего примера кода я не могу точно сказать, должна ли ваша последующая выборка свойства после установки быть в том же сеансе или в другом.

Кроме того, не могли бы вы вставить соответствующее определение модели? И сообщите нам, используете ли вы какие-либо библиотеки, специфичные для App-Engine, которые могут мешать вашим моделям.

...