0

私はGoogleアプリエンジンとPythonにかなり慣れていません。アプリケーションを正常にアップロードした後、基本的な質問に行き詰まります。

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

これは、リクエストをそれを処理するクラスにマップするために一般的に使用されるコード ブロックです。ただし、app.yaml には、個々の URL のハンドラーを指定できるセクションがあります。

私の質問は、Google アプリ エンジンでの Python アプリケーションの正しいアーキテクチャは何かということです。アプリケーションに異なるリクエストを処理するためのクラスが数百ある場合はどうすればよいですか? このコードでそれらすべてを指定する必要がありますか?

私はグーグルで検索しましたが、満足のいく答えが見つかりませんでした。優れたチュートリアルまたはドキュメントへのリンクは大きな助けになります。

4

4 に答える 4

2

基本的に、app.yamlで使用するアプリを定義します。たとえば、複数のアプリがある場合、ここで使用するアプリを指定できます。

はい、ここ(main.py)で許可されているすべてのURLを指定する必要があります。それ以外の場合、リクエストは404を取得します。ただし、正規表現を使用して、特定のタイプのアドレスを特定のハンドラーに一致させることができます。

チュートリアルを確認してください:https ://developers.google.com/appengine/docs/python/gettingstartedpython27/usingwebapp

URIルーティングのドキュメント:http ://webapp-improved.appspot.com/guide/routing.html?highlight = url

于 2013-02-16T12:24:36.807 に答える
1

私は2つの答えを持っています:

1)webapp2ルーティングを使用して、リクエストとURIルーティングを処理できます。これは非常に強力です。URLテンプレートを使用したり、独自のカスタムディスパッチャーを作成したりできます。

2)多くのリクエストでは、単一のURLを使用し、セッション/状態を使用して、投稿後に続行する方法を見つけることができます。つまり、すべてのリクエストにリクエストハンドラを使用する必要はありません。

于 2013-02-16T12:26:04.030 に答える
1

このようにすることができます。

app.yaml 内

- url: /service/.*
  script: service.app

- url: .*
  script: main.app

service.py で

url_map = [
    ('.*/user.*', 'service.UserHandler'),   
    ('.*/data/show/', 'appname.service.DataShowHandler'),
    ('.*/data.*', 'appname.service.DataHandler'),
]

app = webapp2.WSGIApplication(url_map)

http://your-appid.com/service/userにアクセスしようとすると、appengine はルート フォルダにある service.py 内の UserHandler クラスの GET 関数を実行します。

http://your-appid.com/service/data/showにアクセスしようとすると、appengine は Root/appname フォルダーにある service.py 内の DataShowHandler クラスの GET 関数を実行します。

于 2013-02-16T12:13:51.220 に答える
0

app.yamlは、個人的には使用していませんが、セキュアオプションやログインオプションなどの設定に使用できます。
main.pyを使用して、すべてのURLを適切なハンドラーにマップします。

于 2013-02-16T12:01:47.153 に答える