gpt4 book ai didi

python - 在 app.yaml 中定义路由与在 AppEngine 中的 WSGIApplication 中定义一个大型映射相比,是否有性能提升?

转载 作者:IT老高 更新时间:2023-10-28 21:12:59 24 4
gpt4 key购买 nike

场景 1

这涉及在 app.yaml 中使用一个“网关”路由,然后在 WSGIApplication 中选择 RequestHandler

app.yaml

- url: /.*
script: main.py

main.py
from google.appengine.ext import webapp

class Page1(webapp.RequestHandler):
def get(self):
self.response.out.write("Page 1")

class Page2(webapp.RequestHandler):
def get(self):
self.response.out.write("Page 2")

application = webapp.WSGIApplication([
('/page1/', Page1),
('/page2/', Page2),
], debug=True)

def main():
wsgiref.handlers.CGIHandler().run(application)

if __name__ == '__main__':
main()

场景 2:

这涉及在 app.yaml 中定义两个路由,然后为每个路由定义两个单独的脚本(page1.pypage2.py)。

app.yaml

- url: /page1/
script: page1.py
- url: /page2/
script: page2.py

page1.py
from google.appengine.ext import webapp

class Page1(webapp.RequestHandler):
def get(self):
self.response.out.write("Page 1")

application = webapp.WSGIApplication([
('/page1/', Page1),
], debug=True)

def main():
wsgiref.handlers.CGIHandler().run(application)

if __name__ == '__main__':
main()

page2.py
from google.appengine.ext import webapp

class Page2(webapp.RequestHandler):
def get(self):
self.response.out.write("Page 2")

application = webapp.WSGIApplication([
('/page2/', Page2),
], debug=True)

def main():
wsgiref.handlers.CGIHandler().run(application)

if __name__ == '__main__':
main()

问题

每种模式的优缺点是什么?一个比另一个快得多吗?

最佳答案

唯一的性能影响与模块的加载有关:模块在第一次使用时加载到实例上,将它们拆分需要更少的模块加载来为新实例上的页面提供服务。

不过,这非常简单,因为您可以轻松地让处理程序脚本按需动态加载所需的模块 - 这就是许多常见框架已经做的事情。

一般来说,app.yaml 路由是为不同组件或应用程序之间的路由而设计的。例如,remote_api 和 deferred 都有自己的处理程序。因此,为您的应用定义一个处理其他所有内容的处理程序是完全合理的。

关于python - 在 app.yaml 中定义路由与在 AppEngine 中的 WSGIApplication 中定义一个大型映射相比,是否有性能提升?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3025921/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com