【问题标题】:Configure app.yaml in GAE to allow selection of scripts through URL在 GAE 中配置 app.yaml 以允许通过 URL 选择脚本
【发布时间】:2011-10-16 16:29:34
【问题描述】:

我在 Google App Engine 中创建了一个应用程序,它在传统浏览器中运行良好。主脚本称为 example.py(因为我一直在修改一个示例,但我从未更改过它)。它调用一个 html 文件并按照您的预期传递变量。

现在我想开发一个更适合移动设备的新版本。为此,我编写了一个名为 example_mobile.py 的新 python 脚本。它与 example.py 类似,只是它使用不同的样式表调用不同的 html 文件。我知道不优雅,但我认为通过 app.yaml 文件很容易实现。

这是我的 app.yaml 文件:

application: (my application id string)
version: 1
runtime: python
api_version: 1

handlers:
- url: /remote_api
  script: $PYTHON_LIB/google/appengine/ext/remote_api/handler.py
  login: admin

- url: /stylesheets
  static_dir: stylesheets

- url: /javascript
  static_dir: javascript

- url: /images
  static_dir: images

- url: /mobile/.*
  script: example_mobile.py

- url: /.*
  script: example.py

www.(my domain name).com 从 example.py 提取输出没问题。我希望 www.(my domain name).com/mobile 会从 example_mobile.py 中提取输出,但它没有用。还尝试了 www.mobile.(我的域名).com 但没有运气。尝试在 /mobile 末尾删除 /.* ,但这也无济于事。我切换了 example_mobile.py 和 example.py 以检查它是否不是 python 并且我得到了预期的结果,所以我格式化和使用 app.yaml 文件的方式肯定有问题。在 GAE 文档中似乎找不到类似的用例,因此我们将不胜感激。

谢谢,

黛西

【问题讨论】:

    标签: google-app-engine


    【解决方案1】:

    要触发/mobile/.* 路由,您应该访问www.(my domain name).com/mobile/

    一个简单的建议是让/.* 匹配一个example.py,将路由部分留给WSGIApplication 类。

    application = webapp.WSGIApplication(
                                         [('/mobile', example.MobileHandler),
                                         ( '/', example.MainHandler)],
                                         debug=True)
    

    这里的一条经验法则是,在 app.yaml 上,您应该为不同的应用程序或不同的组件设置不同的路由。

    mobile 是不同的应用程序/组件,还是只是具有不同主题和一些较轻功能的同一个应用程序?

    【讨论】:

    • 你的建议很有效。我同意 /mobile/ 路由应该由 www.(my domain name).com/mobile 激活,但事实并非如此。不过,您向 WSGIApplication 类添加处理程序的建议效果很好。
    • @Dessie 不匹配,因为您的移动网站正则表达式指定了尾随 /,而您没有提供。
    猜你喜欢
    • 1970-01-01
    • 2017-04-13
    • 1970-01-01
    • 1970-01-01
    • 2013-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-28
    相关资源
    最近更新 更多