问:谷歌应用引擎app.yaml如何处理main.py内的网址?

时间:2016-07-17 03:04:53

标签: python url-routing app.yaml

我的网站已启动并运行,我的app.yaml文件中指定了大约100个网址。因为app.yaml限制为100个网址,我试图弄清楚如何将app.yaml指定的路由指令传输到main.py.我想修改(缩短)app.yaml文件以将所有请求发送到main.py,然后我希望main.py以app.yaml当前的方式路由请求。我一直在试验下面的三个文件,但无法得到#34的响应;来自MainHandler的Hello在test1.py"如果我请求/ test1以外的任何URL。为什么我没有得到#34;来自MainHandler的浏览器响应test1.py"请求/ xyz的网址?

测试1:

请求:/ test1

响应:来自MainHandler的test1.py

测试2:

请求:/ example

响应:来自main.py

中的ExampleHandler的Hello

Test3的:

请求:/ xyz

响应:main.py

中的Hello MainHandler

为什么上面没有测试3也会导致#34;来自MainHandler的响应在test1.py"我该如何实现呢?

main.py:

#!/usr/bin/env python
import webapp2

class MainHandler(webapp2.RequestHandler):
    def get(self):
        self.response.write('Hello MainHandler in main.py<br>')
        import test1
        test1.app

class ExampleHandler(webapp2.RequestHandler):
    def get(self):
        self.response.write('Hello from ExampleHandler in main.py<br>')

app = webapp2.WSGIApplication([
    ('/example', ExampleHandler),
    (r'.*', MainHandler)],
    debug=True)

test1.py:

import webapp2

class MainHandler(webapp2.RequestHandler):
    def get(self):
        self.response.write('Hello from MainHandler in test1.py')

app = webapp2.WSGIApplication([(r'.*', MainHandler)], debug=True)

if __name__ == "__main__":
    app

的app.yaml:

application: test-for-rr
version: 1
runtime: python27
api_version: 1
threadsafe: yes

handlers:
- url: /favicon\.ico
  static_files: favicon.ico
  upload: favicon\.ico

 - url: /test1
   script: test1.app

- url: .*
  script: main.app

libraries:
- name: webapp2
  version: "2.5.2"

1 个答案:

答案 0 :(得分:0)

优先级层次结构来自app.yaml - &gt;程序中指定的处理程序。

  • 当您点击/test1时,app.yaml会将您的请求路由到test1.app(因为它与/test1路由匹配),并将您的请求路由到test1.MainHandler。< / LI>
  • 当您点击/test3时,app.yaml会将您的请求路由到main.app(因为它与.*路由匹配),并将您的请求路由到main.MainHandler。< / LI>