我正在使用GAE构建一个Web应用程序。
我自己在GAE python项目结构上做了一些研究,
并发现如何将我的处理程序放在项目中没有固定的趋势。
截至目前,我将所有处理程序(控制器)放在main.py,
中并将所有网址(/.*)定向到main.application。
这会让我的应用程序变慢吗?
谢谢!
答案 0 :(得分:1)
不,这不会影响速度。您的代码无论如何都需要加载,因此如果它们都在一个文件中,则没有任何区别。它当然会使文件更复杂,但这是你的问题,而不是GAE。
答案 1 :(得分:1)
通常,这不会使您的应用程序变慢,但它可能会降低您的实例启动时间,但除非您有非常大的复杂应用程序,否则通常不会出现问题。
只要GAE为您启动新实例,实例启动时间就会发挥作用。例如,如果您的应用程序长时间未使用,并且您长时间启动它,或者例如,如果您的应用程序非常繁忙并且需要新实例来处理负载。
python根据需要加载你的模块。因此,如果您启动一个实例,并且请求转到main.py,那么main.py和与之关联的所有模块都将被加载。如果您的应用很大,可能需要几秒钟。我们只是说,例如,加载应用中的每个模块需要6秒钟。对于发出该请求的人来说,这是等待6秒。对该加载实例的后续请求将很快。
可以将处理程序分解为单独的模块。如果\ a的处理程序只需要非常少的代码,那么在单独的文件中使用\ a将减少\ a的响应时间。但是当你加载包含所有其余代码的\ b时,这需要一段时间才能加载。因此,可能需要6秒的负载,并可能将其分解为几个可能需要2秒的请求。
这种类型的优化实际上取决于您需要为每个请求加载的库。您通常希望稍后在遇到问题时执行此操作,而不是预先为此目的设计布局,因为它很难预测。
App Engine热身请求也有助于缓解此问题。