GAE:将所有处理程序放在main.py中会让我的应用变慢吗?

时间:2013-10-08 06:01:41

标签: google-app-engine python-2.7 webapp2

我正在使用GAE构建一个Web应用程序。

我自己在GAE python项目结构上做了一些研究,

并发现如何将我的处理程序放在项目中没有固定的趋势。

截至目前,我将所有处理程序(控制器)放在main.py,

并将所有网址(/.*)定向到main.application。

这会让我的应用程序变慢吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

不,这不会影响速度。您的代码无论如何都需要加载,因此如果它们都在一个文件中,则没有任何区别。它当然会使文件更复杂,但这是你的问题,而不是GAE。

答案 1 :(得分:1)

通常,这不会使您的应用程序变慢,但它可能会降低您的实例启动时间,但除非您有非常大的复杂应用程序,否则通常不会出现问题。

只要GAE为您启动新实例,实例启动时间就会发挥作用。例如,如果您的应用程序长时间未使用,并且您长时间启动它,或者例如,如果您的应用程序非常繁忙并且需要新实例来处理负载。

python根据需要加载你的模块。因此,如果您启动一个实例,并且请求转到main.py,那么main.py和与之关联的所有模块都将被加载。如果您的应用很大,可能需要几秒钟。我们只是说,例如,加载应用中的每个模块需要6秒钟。对于发出该请求的人来说,这是等待6秒。对该加载实例的后续请求将很快。

可以将处理程序分解为单独的模块。如果\ a的处理程序只需要非常少的代码,那么在单独的文件中使用\ a将减少\ a的响应时间。但是当你加载包含所有其余代码的\ b时,这需要一段时间才能加载。因此,可能需要6秒的负载,并可能将其分解为几个可能需要2秒的请求。

这种类型的优化实际上取决于您需要为每个请求加载的库。您通常希望稍后在遇到问题时执行此操作,而不是预先为此目的设计布局,因为它很难预测。

App Engine热身请求也有助于缓解此问题。