Google App Engine: альтернативный метод get_by_id ()

1

Если задать идентификатор объекта, я запрошу его models = Model.get_by_id(id). Тем не менее, я узнаю, что через некоторое время он не вернет результат в целом.

Есть ли альтернативный или рекомендуемый метод запроса по идентификатору объекта в Google App Engine, python?

  • 0
    Что вы имеете в виду, когда "некоторое время он не вернет результат правильно"?
  • 0
    запустив models = Model.get_by_id (id), иногда он ничего не возвращает, а когда-то работает идеально, id является постоянным целым числом.
Показать ещё 1 комментарий
Теги:
google-app-engine

4 ответа

1
Лучший ответ

Проблема исчезает сама по себе после 2011-05-10, которая является датой запуска версии v1.5. Не уверен, что эта проблема связана.

Я не менял никакого кода, так как get_by_id() был в порядке и в течение нескольких дней. Кроме того, я добавил задание cron для запуска get_by_id() каждую минуту и ​​попытаюсь запустить экземпляр экземпляра.

Из моего наблюдения, get_by_id() не удалось, потому что он не мог запросить хранилище данных.

Btw, настройка хранилища данных - репликация ведущего/ведомого.

5

Если вы сохраняете экземпляры класса с родителем, то get_by_id не вернет объект, но вместо этого вернет None из-за того, что ключ не является завершенным, что требует также родительского ключа. Я столкнулся с той же проблемой и был боль в заднице, чтобы понять.

ico = Icons.get_by_id("3", parent = parentkey)

Это вернет объект.; -)

3

Если Model.get_by_id(id) возвращает None, это означает, что вы указали недействительный идентификатор, а не тот, что сам метод ненадежен.

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

  • 0
    Да, проблема не в get_by_id (), а в передаче неверных ключей или неправильной обработке исключений.
0

get_by_id() всегда получает объект, если прошедший объект является допустимым идентификатором объекта и если объекты существуют в хранилище данных.

id можно получить object.key.id в templat

else у вас всегда есть object.get(key).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню