Что делает загрузка в Google AppEngine app.yaml? - PullRequest
13 голосов
/ 14 апреля 2010

Иногда я просматриваю различные учебники по Google AppEngine, и я только заметил кое-что странное в вопросе StackOverflow о favicon.ico, а именно: favicon.ico "not found error" в движке приложения

- URL: /favicon.ico
static_files: media / img / favicon.ico
загрузка: media / img / favicon.ico

- URL: /robots.txt
static_files: media / robots.txt
загрузка: media / robots.txt

Все постеры включали в свои определения app.yaml строку «upload:» Приложение выглядит так же, как со строкой upload:, так и без нее, и я не видел упоминаний об этом. в официальной документации.

Где это используется, или какая разница, если эта строка включена или нет?

Ответы [ 2 ]

7 голосов
/ 10 декабря 2015

Я перечитывал документы снова и снова в надежде лучше понять это. Это то, что я понял из этого.

App Engine сообщает, что загружает наши статические файлы и код приложения в разные места. Для этого он должен знать, какие файлы являются статическими - это указывается в параметре upload.

Однако возникает ряд вопросов, касающихся дизайна параметров, указанных в app.yaml.

  1. Может ли App Engine определить, какие файлы являются статическими, только из параметра static_files?

    В вашем примере значение параметра static_files было идентично значению параметра загрузки (т.е. media / img / favicon.ico). Однако в целом значение параметра static_files отличается от значения параметра загрузки. Параметр static_files предназначен для того, чтобы в него можно было подставлять соответствующие группы из шаблона url для генерации пути к файлу, например,
    - url: /item-(.*?)/category-(.*) static_files: archives/\2/items/\1 upload: archives/(.*?)/items/(.*)

  2. Может ли App Engine определить, какие файлы являются статическими, только из параметра url?

    Как правило, нет, поскольку иерархия ресурсов, подразумеваемая URL-адресом, может не совпадать с фактической структурой папок. Например, я мог бы поместить свой index.html в подпапку, но я мог бы захотеть получить к нему доступ с помощью корневого URL-адреса hello.appspot.com/, а не hello.appspot.com/subfolder/".*1021. *

  3. Может ли App Engine определить, какие файлы являются статическими, используя параметр url и параметр static_files?

    Представляется целесообразным написать функцию, которая возвращает шаблон загрузки с заданным параметром url и параметром static_files, тем самым устраняя необходимость в явном параметре загрузки. Я бы подумал, что это работает для простых случаев, однако, вероятно, есть причина, о которой я не знаю, что документы пишут: «Обработчик не может определить, какие файлы в каталоге вашего приложения соответствуют заданным шаблонам url и static_files».

url: шаблон URL в виде регулярного выражения. Выражение может содержать группировки, на которые можно ссылаться в пути к файлу сценария с помощью обратных ссылок регулярного выражения. Например, /item-(.?)/category-(.) будет соответствовать URL / item-127 / category-fruit и использовать 127 и fruit в качестве первой и второй группировок.
Обработчики:
- url: /item-(.*?)/category-(.*) static_files: archives/\2/items/\1

static_files: Путь к статическим файлам, соответствующим шаблону URL, из корневого каталога приложения. Путь может ссылаться на текст, сопоставленный в группах в шаблоне URL. Как и в предыдущем примере, archives/\2/items/\1 вставляет второе и первое сопоставления вместо \2 и \1 соответственно. С помощью шаблона в приведенном выше примере путь к файлу будет archives/fruit/items/127.

загрузка: Регулярное выражение, которое соответствует путям к файлам для всех файлов, на которые будет ссылаться этот обработчик. Это необходимо, потому что обработчик не может определить, какие файлы в каталоге вашего приложения соответствуют заданным шаблонам url и static_files. Статические файлы загружаются и обрабатываются отдельно от файлов приложения. В приведенном выше примере может использоваться следующий шаблон загрузки: archives/(.*?)/items/(.*)



На дополнительном замечании, альтернативой использованию static_files является использование static_dir, если весь каталог можно пометить как статический. В этом случае параметр загрузки не требуется, поскольку static_dir должен указывать на фактический каталог, и, таким образом, App Engine просто загрузит весь каталог, в который он хранит статические файлы. Однако обратите внимание, что в этом случае использование параметра url будет другим.

URL: URL-префикс. Это значение использует синтаксис регулярного выражения (поэтому специальные символы регулярного выражения должны быть экранированы), но оно не должно содержать группировки. Все URL-адреса, начинающиеся с этого префикса, обрабатываются этим обработчиком, используя часть URL-адреса после префикса в качестве части пути к файлу.

static_dir: Путь к каталогу, содержащему статические файлы, из корневого каталога приложения. Все после конца соответствующего шаблона URL добавляется к static_dir, чтобы сформировать полный путь к запрашиваемому файлу. Все файлы в этом каталоге загружаются вместе с приложением в виде статических файлов.

2 голосов
/ 14 апреля 2010

Здесь задокументировано: https://developers.google.com/appengine/docs/python/config/appconfig#Static_File_Pattern_Handlers. Это в основном регулярное выражение, которое идентифицирует файлы, обрабатываемые картографом. Это требуется для статических обработчиков файлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...