2015-12-05 7 views
6

更新:modulesservicesこれらの日と呼ばれています。Google App Engineアプリのデフォルトのサービス/モジュールは、デフォルト以外のフォルダ/フォルダ構造の兄弟ですか?

私は、各サブフォルダには、各モジュールに関連するコードが含まれている場合は、さまざまなサブフォルダに私のプロジェクトのモジュールを整理したいと思います。特に、デフォルトモジュールを含むフォルダが他のモジュールと同じレベルにあるようにしたい(つまり、すべての兄弟です)。

diagram

しかし、何を私に混乱する声明「Important: The app.yaml file must be located in your application's root directory」である:私はModules documentationに示した図を以下しています。これは、デフォルトモジュール(およびそのapp.yaml)がプロジェクトのルートディレクトリになければならないことを意味するため、デフォルト以外のモジュールの親である必要がありますか?

答えて

14

モジュールは、すべての並べすることができます。各モジュールの<module>.yamlは、モジュールディレクトリ内にあることができます。

このファイルに関するご意見は誤解を招く恐れがありますが、実際には単一モジュールのアプリケーションにのみ適用されます(マルチモジュールアプリケーションでは多くのドキュメントが更新されていません)。

defaultモジュールの設定ファイルは、app.yaml(またはdefaultと呼ばれる)という名前である必要はありません。私は最終的にデフォルト(または他の)モジュール(s)は、必要に応じて(いくつかのツールがそうでなければ文句を言うこと)にそれらをシンボリックリンク、トップレベルでのアプリレベルの設定ファイル(cron.yamldispatch.yamlqueue.yamlindex.yaml)を維持するだろう。

はここでは、例えば、構造体は、私は(main dirはdefaultモジュールが含まれています)私のアプリケーションのいずれかのに持っている:

cron.yaml 
dispatch.yaml 
queue.yaml 
index.yaml 
main/cron.yaml -> ../cron.yaml 
main/index.yaml -> ../index.yaml 
main/main.yaml 
main/queue.yaml -> ../queue.yaml 
buildin/buildin.yaml 
buildin/index.yaml -> ../index.yaml 
buildin/queue.yaml-> ../queue.yaml 

あなただけの関連ツールを起動するときに注意を払う必要があります。これは、アプリケーションのディレクトリから実行、そのアプリケーションのための私のチートシート、である、それのいくつかはまた、pycharmプロジェクトの設定(私はpycharm内の開発サーバを実行している)に反映されます。devserverを実行するには

appcfg.py update main/main.yaml buildin/buildin.yaml 
appcfg.py update_dispatch . 
appcfg.py update_indexes -A <app-name> main 
appcfg.py update_cron -A <app-name> . 
appcfg.py update_queues -A <app-name> . 

dev_appserver.py --host 0.0.0.0 --log_level=debug dispatch.yaml main/main.yaml buildin/buildin.yaml 

更新:要求されたようは、私の設定ファイルの一部を追加しました。

dispatch.yamlファイル、appspotドメインと私のカスタムドメインの両方にbuildinモジュールルーティングの世話をして(他のすべてが自動的にデフォルトのモジュールにルーティングされます):

application: <my_app> 
dispatch: 
    - url: "buildin.my_domain.com/*" 
    module: buildin 
    - url: "buildin-dot-my_app.appspot.com/*" 
    module: buildin 
    - url: "*/buildin/*" 
    module: buildin 

main.yamlファイル:

application: my_app 
module: default 
version: 1 
runtime: python27 
api_version: 1 
threadsafe: true 

handlers: 

- url: /(.*\.min\.css)$ 
    static_files: stylesheets/\1 
    upload: stylesheets/.*\.min\.css$ 
    secure: always 

- url: /(.*\.(ico|gif|png|jpg|svg))$ 
    static_files: images/\1 
    upload: images/.*\.(ico|gif|png|jpg|svg)$ 
    secure: always 

- url: .* 
    script: main.app 
    secure: always 

libraries: 
- name: webapp2 
    version: "2.5.2" 
- name: jinja2 
    version: "2.6" 
- name: pycrypto 
    version: "2.6" 

buildin.yamlファイル:

application: my_app 
module: buildin 
version: 1 
runtime: python27 
api_version: 1 
threadsafe: true 
instance_class: B2 

handlers: 

- url: /(.*\.min\.js)$ 
    static_files: scripts/\1 
    upload: scripts/.*\.min\.js$ 
    secure: always 

- url: /(.*\.min\.css)$ 
    static_files: stylesheets/\1 
    upload: stylesheets/.*\.min\.css$ 
    secure: always 

- url: /(.*\.(ico|gif|png|jpg|svg))$ 
    static_files: images/\1 
    upload: images/.*\.(ico|gif|png|jpg|svg)$ 
    secure: always 

- url: /buildin/cron* 
    script: buildin.app 
    login: admin 

- url: .* 
    script: buildin.app 
    secure: always 

libraries: 
- name: webapp2 
    version: "2.5.2" 
- name: jinja2 
    version: "2.6" 
- name: pycrypto 
    version: "2.6" 
+0

明確化し、チートシートとともに例を提供していただきありがとうございます。それは非常に便利です。 –

+0

@dan、dispatch.yaml + main/main.yaml + buildin/buildin.yamlコードにペーストできますか? – WebQube

+0

@ケビン・リー、私はまだこのエラーを得ることを理解することができません。 google.appengine.api.yaml_errors.EventError:AppInfoExternalタイプのオブジェクトに対する予期しない属性 'ディスパッチ'。 "./app.yaml"、行3、列3の 可能であれば、私に作業コードを教えてください。 [email protected] –

関連する問題