python - Google App Engine 代码优化

标签 python google-app-engine optimization

Google 应用引擎告诉我优化这段代码。有人知道我能做什么吗?

def index(request):
    user = users.get_current_user()
    return base.views.render('XXX.html', 
                 dict(profiles=Profile.gql("").fetch(limit=100), user=user))

然后在模板中我做:

{% for profile in profiles %}
  <a href="/profile/{{profile.user.email}}/"><img src="{{profile.gravatarUrl}}"></a>
  <a href="/profile/{{profile.user.email}}/">{{ profile.user.nickname }}</a>
  <br/>{{ profile.shortDisplay }}

其中使用的方法是:

def shortDisplay(self):
    return "%s/day; %s/week; %s days" % (self.maxPerDay, self.maxPerWeek, self.days)

def gravatarUrl(self):
    email = self.user.email().lower()
    default = "..."
    gravatar_url = "http://www.gravatar.com/avatar.php?"
    gravatar_url += urllib.urlencode({'gravatar_id':hashlib.md5(email).hexdigest(), 
        'default':default, 'size':"64"})
    return gravatar_url

最佳答案

高 CPU 使用率是由于每个请求获取 100 个实体。您在这里有多种选择:

  • 使用 Profile.all().fetch(100) 会更快一些,而且更容易阅读。
  • 从配置文件模型中删除所有无关的属性。反序列化实体的每个属性开销很大。
  • 每页显示较少的用户。
  • 将此页面的输出存储在内存缓存中,并尽可能从内存缓存中呈现。这样一来,您就不需要经常生成页面,因此即使是高 CPU 也没关系。

关于python - Google App Engine 代码优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/298185/

相关文章:

java - GAE 祖先查询黑客 : is this a good practice?

android - java.awt.AWTError : Toolkit not found: apple. awt.CToolkit Android appengineUpdate

google-app-engine - 何时使用 Google App Engine Flex 与 Google Cloud Run

optimization - 找到最小距离

python - 网络 - 测试连接性 [Python 或 C]

python - 使用 ord 函数 (ord(B[0]) - ord ('0' ))

Python:为神经网络定义网格搜索参数的问题

python - Scrapy 是否可以从原始 HTML 数据中获取纯文本?

java - 存储最优解

mysql - 通过将 TEXT 字段拆分为 CHAR(255) 类型的 block 来使 MySQL 表固定