Python Heroku上的Zombie SharedDataMiddleware

Python Heroku上的Zombie SharedDataMiddleware,python,heroku,flask,Python,Heroku,Flask,我正在Heroku上设置一个烧瓶应用程序。在我添加静态文件之前,一切正常。我用这个: from werkzeug import SharedDataMiddleware app = Flask(__name__) app.wsgi_app = SharedDataMiddleware(app.wsgi_app, {'/static': os.path.join(os.path.dirname(__file__), 'static') }) 我第一次部署应用程序时,./static中的相应文件将

我正在Heroku上设置一个烧瓶应用程序。在我添加静态文件之前,一切正常。我用这个:

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。

SharedDataMiddleware默认为发送
缓存控制
过期
HTTP头,这意味着您的web浏览器甚至可能不向服务器发送请求,而只使用缓存中的旧文件。尝试:

Flask对静态文件也有同样的作用。到那里:


为什么不使用烧瓶中为您处理静态文件的部分?在中有很好的描述。也有很好的文档证明它在生产环境中工作不好。SharedDataMiddleware是一个不错的选择。只是不明白为什么它会卡在Heroku的系统中。@nathancahill,在生产环境中不推荐使用Flask提供静态文件,因为像nginx这样的服务器比使用Python更快。但SharedDataMiddleware是Python,因此并不比Flask好。哦,我想这是有道理的。谢谢。很好,但我最后只是把我所有的静态文件放在S3上。
app.wsgi_app = SharedDataMiddleware(
    app.wsgi_app,
    {'/static': os.path.join(os.path.dirname(__file__), 'static')},
    cache=False)
app.config['SEND_FILE_MAX_AGE_DEFAULT'] = None