【问题标题】:How to organize an app-engine application如何组织应用引擎应用程序
【发布时间】:2010-01-24 04:27:43
【问题描述】:

我想创建一个如下所示的目录结构。我怎样才能让 account.py 和 game.py 分别处理转到 \account\ 和 \game\ 的请求。我见过的所有应用引擎示例都包含处理所有 url 的 main.py 中的所有逻辑。

app\account\
           \account.py
   \game\
        \ game.py
   \static\css
          \js
          \images
   \app.yaml
   \main.py

我在 app.yaml 中尝试了以下操作,但没有成功

application: mefirst
version: 1
runtime: python
api_version: 1

handlers:

- url: /static
  static_dir: static

- url: /account
  script: account.py

- url: .*
  script: main.py

【问题讨论】:

    标签: python google-app-engine


    【解决方案1】:

    您的app.yaml 中需要以下内容:

    - url: /account
      script: account/account.py
    
    - url: /game
      script: game/game.py
    
    - url: .*
      script: main.py
    

    顺便说一句,我建议您尝试忘记反斜杠(这样的字符: \ ) - 想想 正常 斜杠(这样的字符: / )。反斜杠是 Windows 的异常现象(即使在那里也几乎不需要 - Python 很乐意接受普通斜杠代替文件路径中的反斜杠),不用作 URL 中的路径分隔符,也不用于 Unix-y 操作系统(包括 Linux 和 MacOSX)。我之所以提到这一点,是因为您谈到了“恭敬地转到 \account\ 和 \game\ 的请求”并且没有这样的事情 - 没有请求转到带有反斜杠的路径,它总是 forward斜线。

    【讨论】:

    • 如果应用引擎将线程安全设置为 true,这将引发错误
    • @DanielF 是的,自从我写下这个答案以来,GAE 在 6 年内发生了很大变化——特别是“脚本”属性现在必须指示(在 python27 运行时)不是脚本,而是一个 WSGI 应用程序(非常不幸的设计决定,以这种方式重载“脚本”而不是引入新的属性名称!),带有点,而不是斜线等。但是,使用运行时“python”(如原始问题中所示) , 无论如何都不接受线程安全等)。
    【解决方案2】:

    看看MVCEngine,这是一个 AppEngine 框架,它提供了一个类似于 Ruby on Rails 的结构来构建应用程序。对于您想要做的事情,它可能会也可能不会过分杀伤力,但是如果您查看主项目文件 MVCEngine.py,您应该能够看到它是如何提供类似于您的项目目录结构的想。难度不大。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-19
      • 2012-06-26
      • 2017-12-03
      • 1970-01-01
      • 2011-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多