GoogleAppEngine上的Django:performance h

2024-05-20 03:14:00 发布

您现在位置:Python中文网/ 问答频道 /正文

几周前我问过你。今天,我实际上已经编写并发布了一个标准的Django应用程序,即一个由Google CloudSQL支持的全功能关系数据库支持(因此也是功能齐全的Django-admin)。唯一一次,我不得不偏离标准的Django方式来做事情,那就是发送电子邮件(必须用GAE的方式)。我的设置是GAE 1.6.4Python2.7Django 1.3,使用app.yaml

libraries:
- name: django
  version: "1.3"

不过,我确实需要您建议明确的可操作步骤,以提高此Django应用程序在冷态时的初始请求响应时间。我在GAE上有一个简单的webapp2网站,它不会撞到数据库,当时,响应时间是1.56s。Django one,当cold时,用2个查询(两个count(*)查询每个表包含少于300行),响应时间是10.73s!不鼓励使用主页;)

我想到的是删除我不需要的middleware类和其他特定于Django的优化。然而,从GAE的角度来改进事情的技巧是非常有用的。在

N.B.我不想让这成为关于在GAE上支持Django的优点的讨论。我可以提到,我个人的Django专业知识,以及由此产生的开发生产力,在采用Django方面确实有相当大的影响,而不是其他框架。此外,使用CloudSQL,很容易摆脱GAE(希望不是!)因为Django代码可以在其他任何地方工作,只需很少(或没有)修改。关于这个主题的相关讨论可以在herehere找到。在


Tags: djangoapp应用程序标准hereadmin电子邮件google
2条回答

当没有实例运行时,例如版本升级后,或者15分钟内没有请求时,那么一个请求会触发一个实例的加载,大约需要10秒,所以你看到的是正常的。在

因此,如果你的应用程序闲置超过15分钟,你会看到这种行为。一种解决方法是每隔10分钟让一个cron作业ping你的实例(尽管我相信google不喜欢这样)。在

更新:

您可以通过启用计费然后在GAE管理的“应用程序设置”下设置minimum空闲实例设置为1来避免这种情况。注意:min设置在免费应用程序上不可用,只有max。在

我没有一个完整的答案,但我正在贡献,因为我也想找到一个解决办法。我目前正在使用一个正在运行的cron作业(我实际上需要cron作业,所以它不仅可以让我的应用程序保持运行)。在

我在一个与GAE/Python/Django相关的邮件列表中看到过这样的讨论:与webapp相比,加载所有Django文件所需的时间是非常重要的,因此从部署中删除不使用的Django组件也可以提高启动时间。我已经可以通过删除contrib文件夹的某些部分来节省大约3秒钟的时间。我把他们排除在我的应用程序yaml. 在

我的启动时间仍然在6秒左右(完整应用程序、Django nonrl、HRD)。当我的应用程序更简单的时候,它更像是4。在

我的怀疑是Django在启动时验证了它的所有模型,而且处理时间很长。如果你有时间用一个绝对0模型的应用程序做实验,我会好奇它是否产生了任何影响。在

我也很好奇你最初的两个查询是否产生了重大影响。在

相关问题 更多 >