Может ли служба / модуль по умолчанию в приложении Google App Engine быть дочерним элементом нестандартного по структуре папок?

Обновление: в наши дни modules называются services .

Я хотел бы организовать модули моего проекта в разные подпапки, где каждая подпапка содержит код, относящийся к каждому модулю. В частности, я хотел бы, чтобы папка, содержащая модуль по умолчанию, была на том же уровне, что и другие модули (т. Е. Все они братья и сестры). Я следую диаграмме, приведенной в документации модhive :

диаграмма

Однако меня смущает утверждение « Важно: файл app.yaml должен находиться в корневом каталоге вашего приложения ». Означает ли это, что модуль по умолчанию (и его app.yaml) должен находиться в корневом каталоге проекта и, следовательно, быть родителем нестандартных модhive?

Модули могут быть рядом друг с другом. .yaml для каждого из них может находиться внутри модуля dir.

Заметка о файле app.yaml вводит в заблуждение, она действительно применима только к приложениям с одним модулем (многие части документации не были обновлены для многомодульных приложений).

Конфигурационный файл модуля по default даже не нужно называть app.yaml (или его dir по default ). Я бы сохранил конфигурационные файлы на уровне приложения ( cron.yaml , dispatch.yaml , queue.yaml и index.yaml ) на верхнем уровне, в конце концов, привязывая их к стандартным (или другим) модулям (ах) по мере необходимости (некоторые инструменты могут жаловаться иначе).

Вот, например, структура, которую я получил для одного из моих приложений ( main каталог содержит модуль по 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):

 appcfg.py update main/main.yaml buildin/buildin.yaml appcfg.py update_dispatch . appcfg.py update_indexes -A  main appcfg.py update_cron -A  . appcfg.py update_queues -A  . 

Чтобы запустить devserver:

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

Обновление: добавлены некоторые из моих конфигурационных файлов по запросу.

Файл dispatch.yaml , заботясь о buildin модуля buildin как в домене appspot, так и в моем пользовательском домене (все остальные автоматически перенаправляются на модуль по умолчанию):

 application:  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" 
  • Понимание оператора модуля%
  • Есть ли какая-либо однолинейная аналогия в ES6 для ES5 `module.exports = require ('./ inner.js')`?
  • Что такое модуль в .NET?
  • Лучший способ загрузить модуль / class из папки lib в Rails 3?
  • Как расширить модуль python? Добавление новых функций в пакет `python-twitter`
  • Несколько модhive в Angularjs
  • addr2line на модуле ядра
  • TypScript ReferenceError: экспорт не определен
  • Как использовать модуль для float / double?
  • Как установить определенную версию набора модhive Perl?
  • Как работает оператор модуля?
  • Interesting Posts

    сочетание и перестановка в C ++

    Что я могу сделать с кучей старых 1 ГБ / 512 МБ памяти DDR2 RAM?

    Как преобразовать строку dd / mm / yyyy в datetime в SQL Server?

    Заменить все вхождения строки с помощью StringBuilder?

    Как предотвратить несанкционированный доступ к моей базе данных Firebase?

    Включить CORS в Web API 2

    Как изменить столбец MySQL, чтобы разрешить NULL?

    Расширение отказывается загружать скрипт из-за директивы политики безопасности контента

    Google Chrome теряет файлы cookie

    Зачем избегать подтипов?

    Обнаружить кнопку средней кнопки (кнопка прокрутки) с помощью jQuery

    Машина Window 8 не может пинговать устройства в одной подсети

    Java НИКОГДА не пропускает ссылку, правильно? … правильно?

    Получение электронной почты от внешних поставщиков Google и Facebook во время подключения к учетной записи в приложении MVC5 по умолчанию

    Когда один и тот же идентификатор пользователя пытается войти на несколько устройств, как мне убить сеанс на другом устройстве?

    Давайте будем гением компьютера.