通过使用Flask-assets和Flask-cdn扩展名的CDN服务静态文件,而无需本地静态目录

时间:2019-02-20 00:40:29

标签: python flask flask-assets

我想使用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不再正常工作。

0 个答案:

没有答案