использование хранилища данных GAE для управления заданиями

1

У меня есть объект "Расчет" в моем хранилище данных, скажем, 7 миллионов объектов под этим объектом. Он имеет следующие свойства (время выполнения python):

class Calculation(db.Model):
    question = db.StringProperty(required=True)
    answer = db.StringProperty()

предположим, что примерами свойства "вопрос" являются такие вещи, как "1 + 1", "2 + 2", "3 + 3" (не очень важно). Все объекты вычислений начинаются с пустых свойств ответа.

Когда пользователь подключается к приложению, выполняется ajax-вызов, и мое приложение должно [1] извлекать объект Calculation с пустым свойством answer и отправлять его в браузер пользователя. Затем пользовательский браузер оценивает вопрос и отправляет его другому обработчику сервера.

Как обновить указанное свойство ответа объекта вычисления [2]?

Если бы кто-то мог предоставить мне код для [1] и [2], это было бы здорово. Не очень опытен с App Engine, и материал запроса запутан. Каково наилучшее решение для этого, если я хочу сохранить как можно больше серверных процессоров?

Благодарю!

Теги:
google-app-engine
google-cloud-datastore

1 ответ

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

Я не знаю, действительно ли я это понимаю. Но вам просто нужно вернуть для вашего первого вызова ajax ключ объекта Calculation и question. Когда пользователь делает ответ, вы сначала получаете объект по ключу и обновляете answer свойства.

Шаг 1, вызов ajax возвращает вопрос в JSON (например):

# To fetch an empty answered question
qry = Calculation.All().filter('answer =', None)
ref = qry.get()

# The Json response
{ 'key': unicode(ref.key()),
  'question': ref.question}

Шаг 2: Вы обновляете объект по ключу:

# key and answer are variable from an http GET or POST request.
ref = db.get(key)
ref.answer = answer
ref.put()
  • 0
    спасибо, именно то, что я искал. однако я считаю, что qry должен быть qry = Calculation.all (). filter ('answer =', 'None')
  • 0
    @ejang Нет, не должно быть - это будет соответствовать ответам со строковым значением «Нет», а не ответам « None .
Показать ещё 1 комментарий

Ещё вопросы

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