使用GAE数据存储区进行作业管理

时间:2011-09-04 05:16:51

标签: python google-app-engine google-cloud-datastore

我的数据存储区中有一个“计算”实体,例如该实体下有700万个对象。它具有以下属性(python运行时):

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

假设'问题'属性的例子是'1 + 1','2 + 2','3 + 3'(不是很重要)。所有计算对象都以空答案属性开始。

当用户连接到应用程序时,会进行ajax调用,我的应用程序应该[1]获取具有空answer属性的Calculation对象并将其发送到用户的浏览器。然后用户的浏览器评估问题并将其发送回不同的服务器处理程序。

如何更新特定计算对象的答案属性[2]?

如果有人能为我提供[1]和[2]的代码,那就太棒了。 App Engine并没有真正的经验,而且查询内容令人困惑。如果我想尽可能多地节省服务器CPU,那么最佳解决方案是什么?

谢谢!

1 个答案:

答案 0 :(得分: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()