1

我在 Google App Engine 中使用 Python 2.7,似乎无法正确设置我的 app.yaml 文件。

我的目标是,如果我去,http://localhost/carlos/我会得到一个执行的 carlos.py

这是我的目录结构:

app\
   \app.yaml
   \main.py
   \carlos.py

这是我当前的 app.yaml 文件:

application: myapp
version: 1
runtime: python27
api_version: 1
threadsafe: yes

handlers:
- url: /carlos/.*
  script: carlos.app

- url: .*
  script: main.app

我的 carlos.py 文件是:

import webapp2

class MainHandler(webapp2.RequestHandler):
  def get(self):
    self.response.out.write("Hello, Carlos!")

app = webapp2.WSGIApplication([('/carlos', MainHandler)],
                              debug=True)

但是,我现在得到的只是 404 Not Found 错误。有什么想法吗?

4

2 回答 2

4

我能够确定解决方案,并认为我会为那里的任何人发布它。

在我的 carlos.py 文件中,我需要替换:

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

app = webapp2.WSGIApplication([('/carlos/', MainHandler)],
                              debug=True)

WSGIApplication 的第一个参数似乎是指从您的根 Web 地址开始的 TOTAL 路径,而不是最初指向它的 INCREMENTAL 路径。

我选择这个答案而不是 Littm 提供的答案,因为我想继续使用 WSGI

于 2012-09-08T05:58:29.893 回答
1

它进行了以下修改:

1 - 在 yaml 文件中将“carlos.app”替换为“carlos.py”,将“main.app”替换为“main.py”。

2 - 在文件“carlos.py”中的“/carlos”之后添加一个斜杠(“/”)。

3 - 在每个python文件(carlos.py和main.py)的末尾添加以下部分代码

def main():
    app.run()

以下是修改文件的示例:

应用程序.yaml:

application: myapp
version: 1
runtime: python27
api_version: 1
threadsafe: no

handlers:
- url: /carlos/.*
  script: carlos.py

- url: .*
  script: main.py

carlos.py : 导入 webapp2

class MainHandler(webapp2.RequestHandler):
  def get(self):
    self.response.out.write("Hello, Carlos!")

app = webapp2.WSGIApplication([('/carlos/', MainHandler)],
                          debug=True)

def main():
    app.run()

主.py:

import webapp2

class MainHandler(webapp2.RequestHandler):
  def get(self):
    self.response.out.write("Hello, MAIN!")

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

def main():
    app.run()

您可以尝试导航到:

localhost:8080/carlos/ 和 localhost:8080/ 查看结果

希望能帮助到你 ;)

于 2012-09-07T08:01:58.673 回答