App.yaml - 为多个静态目录提供服务的单个URL

时间:2014-09-06 15:28:30

标签: python google-app-engine

app引擎(python)是否可以将多个静态目录指向一个url?在我的app.yaml文件中,我希望做类似的事情:

ATTEMPT 1:

 - url: /media/
   static_dir: static/.*

ATTEMPT 2:

 - url: /media/
   static_dir: static/dir1

 - url: /media/
   static_dir: static/dir2

尝试3:

 - url: /media/
   static_dir: static/dir1
   static_dir: static/dir2

使用任何符号(。*)会导致两个目录都无法正常工作。尝试2中的多重声明导致仅忽略第一个工作(dir1)和第二个工作(dir2)。当我尝试运行引擎并允许它在本地运行时,尝试3会发出警告。

如何在不更改每个新静态目录的URL的情况下执行此操作?

2 个答案:

答案 0 :(得分:2)

这是不可能的。但你可以使用/media-1 / img.jpg,/ media-2 / bla.jpg等链接。

- url: /media-(.*?)/(.*)
  static_files: static/dir\1/\2
  upload: static/(.*?)/(.*)

更多信息docs

我认为唯一的出路是使用简单的构建脚本,它将所有图像从/ static / dir1和/ static / dir2复制到媒体中。您也可以使用此脚本进行一键式部署。像这样:

import os, glob
source = ['static/dir-1', 'static/dir-2']
dest = 'media'
for s in source:
  for f in glob.glob(os.path.join(s, '*.*')):
    shutil.copy(f, dest)

答案 1 :(得分:1)

假设您只是希望“静态”下的所有内容通过“/ media”提供,它应该可以正常工作:

 - url: /media
   static_dir: static

编辑 - 在我写这篇文章的时候,这里使用了这个确切的配置: https://imaginaryboy.appspot.com/media/dir1/text.txt