在Python

时间:2017-11-09 13:05:59

标签: python google-app-engine jinja2

我正在使用带有Python和Jinja2模板引擎的Google App Engine免费套餐。

我的任务是对所有5000项投票“是”或“否”。为此,我在索引页面上使用以下查询。

{% extends "base.html" %}
{% block content %}
{% for item in items if not item.voted %}
//HTML goes here to display the item
{% break %}
{% endfor %}
{% endblock %}

我正在打破循环,因为我想在索引页面上随时显示一个项目。该项目可以随机选择,但不得投票。这是一个非常优化/懒惰的解决方案,在本地工作得很好但在应用程序引擎服务器上这是一个昂贵的操作。投票一些项目后,我收到以下错误:

OverQuotaError: The API call datastore_v3.RunQuery() required more quota than is available.

有人可以建议更好的解决方案吗?我对使用jinja2模板引擎的知识非常有限,所以我找不到便宜的解决方案。

1 个答案:

答案 0 :(得分:1)

有多种方法可以做到。

  1. 添加您实体的“随机”属性,然后查询1项(使用limit = 1),其中“RandomProp> randomValue”。这与Jinja2无关(因为Jinja只是一个模板引擎)并且应该在你的Python代码中完成并由3部分组成:修改模型以添加新的prop,当保存实体分配随机值时对于新的道具,当想要显示数据时,对新属性执行过滤查询,其属性大于某个(另一个)随机值。

  2. 保留实体的ID列表并随机选择一个,然后按键从DB获取。