Django实例在Google App Engine下启动

时间:2009-09-26 19:15:30

标签: python django google-app-engine app-engine-patch google-app-engine-patch

在考虑如何制作快速且可扩展的Web应用程序之后,我几乎决定采用Google App Engine,Python + Django和app-engine-patch的组合。但是我在app-engine-patch FAQ中发现了一条评论,让我觉得这个组合可能并不像我想象的那么成熟:可能需要几秒钟(1-4,根据常见问题解答)来启动Django的一个实例。如果从请求请求有一些持久性,这可能不是问题,但似乎当没有持续流量时,Django实例将在几秒钟内关闭。如果系统没有每隔一秒左右调用一次,则任何传入的请求都将被授予秒(!)。这是无法接受的。作为一个快速修复(丑陋,我知道),我正在考虑让外部机器每秒向框架发出一个虚拟请求,以保持它的存活。

你同意吗?你有其他方法吗?

如果有足够的流量从一个n服务器跳转到n + 1,那么我会遇到的另一个疑问是,由于必须启动一个新的Django实例,该请求是否会被授予几秒钟?或谷歌的基础设施不能这样工作?我承认我对此无知。问题。

帮助!

5 个答案:

答案 0 :(得分:3)

是的,漫长的启动时间是使用带有大量代码的框架的一个警告。目前,除了使用体积较轻的框架(例如内置的webapp框架)之外,目前还没有办法解决它们。

不推荐轮询您的应用:它会耗尽配额,并且实际上并不保证真实用户请求会在您的轮询请求所针对的实例上发生,因为应用在多个实例上运行。

幸运的是,有一个简单的解决方案:受欢迎!您的应用越流行,实例需要重新启动的频率就越低,并且影响的用户比例就越小。

答案 1 :(得分:1)

我尊重你想要做的事情,但这听起来有点像我以前的成熟优化。你正在讨论的py + django补丁是谷歌推荐的,直到他们升级到“真正的”django,所以我无法想象它就是那么糟糕。测试你所谈论的内容的性能也不难,所以我建议你这样做,并在做出最终决定之前首先运行一些指标。这样,当别人开始抱怨时,你会有一些数学支持;)

答案 2 :(得分:1)

他们还在常见问题解答中提到使用压缩版本的Django将有助于加载时间,尽管我猜它可能仍然很长。至于你原来的问题,我同意其他人投票你的应用可能不是一个好主意,因为它可能无法解决你的问题,因为谷歌可能会在许多机器上分发你的请求等。

答案 3 :(得分:0)

另外,在我看来(但尼克可以在这里纠正我,如果我错了),如果你使用内置的Django(.97或1.0),加载不是一个问题。从逻辑上讲,我会说他们将内置的lib保留在内存中供所有人使用,或者在实例之间共享缓存的代码。但我不确定。

答案 4 :(得分:0)

Takashi Matsuo's comparisons。基本上,对于几乎没有任何功能的最简单的app-engine-patch,他声称webapp + Django模板大约需要1s而不是350ms。

对于我们的应用程序来说感觉好于超过1秒,但Takashi只是尝试了他能想到的最简单的应用程序。