我想使用Google存储桶提供我的静态文件。 我使用以下设置成功实现了目标:
这是我的应用程序结构:
config.py
app|
|static|
|assets|
|js
|css
|images
|templates
|__init__.py
初始化 .py:
from flask_assets import Environment, Bundle
import flask_cdn import CDN
bundles = {
...
}
app = Flask(__name__)
assets = Environment(app)
assets.register(bundles)
CDN(app)
...
config.py:
...
CDN_DOMAIN = "storage.googleapis.com/my-bucket"
CDN_HTTPS = True
FLASK_ASSETS_USE_CDN = True
在上面,我所有的图像,css,js文件均正确指向存储桶。
这是我的问题:仅当存在静态目录的本地副本(实例的本地副本)(static / assets / js,css,...)时,以上方法才有效。我不想保留本地副本。我想要一个集中化的静态文件夹(位于Google存储桶中),以便我的所有实例都可以共享静态资源。
按实例,我指的是计算引擎实例。
这是我得到的错误的一部分:
File ".../mysite/local/lib/python2.7/site-packages/webassets/merge.py", line 77, in data
f = open(self.filename, 'r', encoding='utf-8')
IOError: [Errno 2] No such file or directory: '/var/www/html/mysite/appk/static/assets/css/a.css'
因此,从本质上讲,当我删除资产文件夹的内容时,CDN的url_for不再正常工作。