计数方法投掷500错误

时间:2012-09-14 12:41:46

标签: google-app-engine gql

我已陷入困境。我想知道基于每日,每周,每月和所有时间的获取次数。在数据存储区中,计数约为2,368,348。每当我尝试通过Model或GqlQuery获取计数时,我都会收到500错误。当行数较少时,下面的代码工作正常。

请允许任何大师纠正我或告诉我正确的解决方案吗?我正在使用Python。

模特:

class Fetch(db.Model):
    adid = db.IntegerProperty()
    ip = db.StringProperty()
    date = db.DateProperty(auto_now_add=True)

统计代码:

adid = cgi.escape(self.request.get('adid'))
...
query = "SELECT __key__ FROM Fetch WHERE adid = " + adid  + " AND date >= :1"  
rows = db.GqlQuery( query, monthlyDate)
fetch_count = 0
for row in rows:
   fetch_count = fetch_count + 1
self.response.out.write( fetch_count)

1 个答案:

答案 0 :(得分:1)

看起来您的查询花费的时间比GAE允许查询运行的时间长(通常约为60秒)。来自count() documentation

  

除非预期结果计数很小,否则最好指定一个限制参数;否则该方法将继续,直到完成计数或超时。

来自Request Timer documentation

  

请求处理程序生成并返回对请求的响应的时间有限,通常约为60秒。一旦达到截止日期,请求处理程序就会中断。

如果提出DeadlineExceededError,这就是您的问题。如果您需要运行此查询,请考虑在GAE中使用Backends。使用后端,生成和返回请求没有时间限制。