2015-12-05 25 views
6

Güncelleme: modules bu günlerde services olarak adlandırılmıştır.Bir Google App Engine uygulamasında varsayılan bir hizmet/modül, klasör yapısı açısından varsayılan olmayan bir kardeşin kardeşi olabilir mi?

Projemin modüllerini, her alt klasörün her bir modüle ait kodu içerdiği çeşitli alt klasörlere düzenlemek istiyorum. Özellikle, varsayılan modülün bulunduğu klasörün diğer modüller ile aynı seviyede olmasını istiyorum (yani hepsi kardeş).

diagram

Ancak bana ne karıştıran açıklama "Important: The app.yaml file must be located in your application's root directory" dir: Ben Modules documentation gösterilen diyagram takip ediyorum. Bu, varsayılan modülün (ve onun app.yaml'sinin) proje kök dizininde olması ve bu nedenle varsayılan olmayan modüllerin üst öğesi olması gerektiği anlamına mı geliyor?

cevap

14

Modüllerin hepsi yan yana olabilir. Her biri için <module>.yaml modülü dir içinde olabilir.

app.yaml dosyasıyla ilgili not yanıltıcıdır, yalnızca tek modül uygulamaları için geçerlidir (çok sayıda modül için çok sayıda belge güncelleştirilmemiştir).

default modülünün yapılandırma dosyasının, app.yaml (veya onun adı default) olarak adlandırılması bile gerekmez. Uygulama düzeyinde yapılandırma dosyalarını (cron.yaml, dispatch.yaml, queue.yaml ve index.yaml) en üst düzeyde tutup, bunları gerektiğinde varsayılan (veya diğer) modüllere symlink ediyorum (bazı araçlar başka şekilde şikayet edebilir).

İşte örneğin, ben lazım yapısı uygulamalarıma biri için (main dir default modülünü içerir), 's: İlgili araçları çağrılırken Sadece dikkat etmek gerekir

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 

.

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> . 

devserver çalıştırmak için: Bu (ı pycharm içindeki gelişim sunucusu koşuyorum) bir kısmı da pycharm proje yapılandırma yansır uygulamanın dir, gelen yürütülen bu uygulamaya ilişkin benim hile-levha, olduğu :

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

Güncelleme: istendiği gibi, benim yapılandırma dosyalarının bazı ekledi.

dispatch.yaml dosya, appspot etki ve Özel alan hem buildin modül yönlendirme bakımı (her şey otomatik olarak varsayılan modülüne yönlendirilir):

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 dosyası:

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 dosyası:

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

Açıklama için ve hile sayfası ile birlikte örnek verdiğiniz için teşekkür ederiz. Bu çok kullanışlı. –

+0

@dan, dispatch.yaml + main/main.yaml + buildin/buildin.yaml kodunuzu yapıştırabilir misiniz? – WebQube

+0

@Kevin Lee, hala bu hatayı almayı anlayamıyorum. google.appengine.api.yaml_errors.EventError: AppInfoExternal türünde nesne için beklenmedik özellik 'gönderme'. "./app.yaml", satır 3, sütun 3 Lütfen mümkünse bana bir çalışma kodu verin. [email protected] –

İlgili konular