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 の最初の引数は、元の INCREMENTAL パスではなく、ルート Web アドレスからの TOTAL パスを参照しているようです。

WSGIを使い続けたいので、Littmから提供されたものよりもこの回答を選択しています

于 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()

変更されたファイルの例を次に示します。

app.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()

main.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 に答える