0

我对谷歌应用引擎和 python 很陌生。成功上传应用程序后,我遇到了一个基本问题。

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

这是通常用于将请求与处理它的类映射的代码块。但是 app.yaml 中有一个部分允许为单个 url 指定处理程序。

我的问题是谷歌应用引擎上的 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

你可以这样做。

在 app.yaml

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

- url: .*
  script: main.app

在服务.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 回答
1

我有两个答案:

1)您可以使用 webapp2 路由来处理请求和 uri 路由。这是非常强大的。您可以使用 url 模板和/或编写自己的自定义调度程序。

2) 对于很多请求,您可以使用单个 URL 并使用会话/状态来了解如何在发布后继续。这意味着:您不必为每个请求都使用请求处理程序。

于 2013-02-16T12:26:04.030 回答
0

app.yaml 可用于设置诸如安全和登录选项,虽然我个人不使用它们。
我使用 main.py 将所有 url 映射到正确的处理程序。

于 2013-02-16T12:01:47.153 回答