GAE app.yaml子目录中脚本的脚本处理(python)

时间:2013-11-05 16:46:46

标签: python google-app-engine wsgi webapp2 app.yaml

我正在设置一个新的GAE项目,我不能让我的脚本在子目录中工作。

编辑:如果我转到localhost:8080/testing_desc.html我没有任何错误,只是一个空白页面(view-source也是空白的)。我的根目录中的脚本正常工作。根和子目录中都有__init__.py

Python脚本示例(“/ testing/testing_desc.py”):

import webapp2 as webapp

class DescTstPage(webapp.RequestHandler):
    def get(self):
        html = 'This should work.'
        self.response.out.write(html)

app = webapp.WSGIApplication([('/.*', DescTstPage)], debug=True)

的app.yaml:

application: blah
version: blah
runtime: python27
api_version: 1

default_expiration: "5d 12h"

threadsafe: false

libraries:
- name: webapp2
  version: latest


handlers:
- url: /                  <-- This one works
  script: main.app
- url: /index.html        <-- This does NOT work (??)
  script: main.app
- url: /(.*?)_desc.html   <-- Also does NOT work
  script: \1/\1_desc.app
#file not found
- url: /.*
  script: file_not_found.app

我也尝试过更简单的yaml版本:

-url: /testing_desc.html
 script: /testing/testing_desc.app

4 个答案:

答案 0 :(得分:2)

当您使用WSGI Python27时,这将起作用。使用点作为分隔符:

-url: /testing_desc.html
 script: /testing.testing_desc.app

答案 1 :(得分:0)

您正在将路由列表传递给您的WSGIApplicaiton调用。这些路由必须匹配正在处理的URL。 ('/', DescTstPage)只是将“/”网址与您的处理程序匹配。 /.*匹配所有路线。

您在testing/testing_desc.app设置了哪些路线?它们必须与/testing_desc.html匹配。

答案 2 :(得分:0)

要让我的脚本在sub-dir中工作,我将app.yaml/testing/testing_desc.py更改为:

的app.yaml:

- url: /testing.html
  script: testing/testing_desc.py

/testing/testing_desc.py:

app = webapp.WSGIApplication([('/.*', DescTstPage),], debug=True)

def main():
    run_wsgi_app(app)

if __name__ == '__main__':
    main()

ATM我不明白如何使用sub-dir进行路由工作,所以我将使用它。

答案 3 :(得分:0)

答案在这里: How can i use script in sub folders on gae?

未明确说明,但在答案中,您必须在/foo/来电中将/foo更改为WSGIApplication,该地址为www.bar.com/foo。如果您要映射到www.bar.com/foo.html,则需要在/foo调用中将/foo.*更改为WSGIApplication,并将app.yaml中的网址处理程序更改为- url: /foo\.html