【发布时间】:2012-07-15 23:30:08
【问题描述】:
我正在 Heroku 上设置一个 Flask 应用程序。在我添加静态文件之前一切正常。我正在使用这个:
from werkzeug import SharedDataMiddleware
app = Flask(__name__)
app.wsgi_app = SharedDataMiddleware(app.wsgi_app, {'/static': os.path.join(os.path.dirname(__file__), 'static') })
我第一次部署应用程序时,./static 中的相应文件将在 herokuapp.com/static 上可用。但是在初始部署之后,Heroku 上的文件永远不会改变。如果我将最后一行更改为:
app.wsgi_app = SharedDataMiddleware(app.wsgi_app, {'/assets': os.path.join(os.path.dirname(__file__), 'static') })
静态文件的新 URL herokuapp.com/assets,然后我可以看到更新的文件。
文件的镜像似乎卡在了系统中。我已经更改了四次,仍然可以访问所有 URL。
【问题讨论】:
-
为什么你不使用flask中为你处理静态文件的部分?在Flask Docs 中有很好的描述。
-
它也有据可查,因为它在生产环境中不能很好地工作。 SharedDataMiddleware 是要走的路。只是无法弄清楚为什么它会卡在 Heroku 的系统中。
-
@nathancahill,推荐在生产环境中使用 Flask 提供静态文件,因为像 nginx 这样的服务器比通过 Python 更快。但是 SharedDataMiddleware 是 Python,因此并不比 Flask 好。
-
哦,我想这是有道理的。谢谢。