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

Python App.yaml-为多个静态目录提供服务的单个URL,python,google-app-engine,Python,Google App Engine,在AppEngine(python)上是否可以将多个静态目录指向一个url?在我的app.yaml文件中,我希望执行以下操作: 尝试1: - url: /media/ static_dir: static/.* 尝试2: - url: /media/ static_dir: static/dir1 - url: /media/ static_dir: static/dir2 尝试3: - url: /media/ static_dir: static/dir

在AppEngine(python)上是否可以将多个静态目录指向一个url?在我的app.yaml文件中,我希望执行以下操作:

尝试1:

 - url: /media/
   static_dir: static/.*
尝试2:

 - url: /media/
   static_dir: static/dir1

 - url: /media/
   static_dir: static/dir2
尝试3:

 - url: /media/
   static_dir: static/dir1
   static_dir: static/dir2
使用anything符号(*)会导致两个目录都不工作。尝试2中的多重声明只会导致第一个有效(dir1)和第二个(dir2)被忽略。尝试3会在我尝试运行发动机并允许其在本地运行时发出警告


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

假设您只希望“static”下的所有内容都通过“/media”提供服务,它应该可以正常工作,如下所示:

 - url: /media
   static_dir: static
编辑-在我写这篇文章时,这里使用了这个精确的配置:
这是不可能的。但是您可以使用/media-1/img.jpg、/media-2/bla.jpg等链接使其工作

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

我认为唯一的解决方法是使用简单的构建脚本,它会将/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)

我不喜欢这个解决方案,因为我的URL路径在进入dir1或dir2文件夹之前会有一个额外的级别,但这不是一个坏的建议……很遗憾,无法完全按照我的要求执行(根据Dmitry Sadovnychi的回答)。既然我要这样做,就把这个标记为答案。感谢您花时间回复。感谢您的回复。这是一个很好的观点,我很感谢你的推荐。我现在要实现‘imaginaryboy’的解决方案(由于简单),但从长远来看,我可能会做更多类似的事情。谢谢