【问题标题】:Serving Static Files Through Flask and Nginx?通过 Flask 和 Nginx 提供静态文件?
【发布时间】:2015-06-04 22:06:53
【问题描述】:

我有一些通过 Flask 提供的静态文件。在给定的请求上,我运行一些处理和身份验证,然后提供文件。我一直在使用 Flask 的send_from_directory 来做这件事,但看起来这会缓存文件一段时间,这对我没有好处。我有 Flask 在 nginx 后面运行,所以我可以通过 nginx 部分提供服务,但我需要在文件被提供之前运行处理/身份验证。

所以,主要问题是,假设我需要在提供服务之前在 Flask 中进行处理/身份验证,我如何使用 Flask 和 nginx 提供未缓存的静态文件?

注意:我已经看到了详细说明如何仅通过 nginx 提供文件的答案,但这对我没有好处,因为我必须在提供服务之前在 Flask 中进行处理。

【问题讨论】:

标签: python nginx flask


【解决方案1】:

默认情况下,flask 会将您使用 send_from_directory 发送的文件缓存 12 小时。您至少有几个选项可以克服这种行为。

您可以将配置值SEND_FILE_MAX_AGE_DEFAULT 更改为小于 1 或 0 秒的值,这将影响整个应用程序使用的默认值。或者,您可以将其直接传递给 send_from_directory 调用您不希望使用关键字 cache_timeout 的缓存。

例如,

 @app.route('/uploads/<path:filename>')
 def download_file(filename):
     return send_from_directory(app.config['UPLOAD_FOLDER'],
                                filename, cache_timeout = 0)

或者您可以继承 Flask 并覆盖 get_send_file_max_age 方法。

【讨论】:

    猜你喜欢
    • 2011-01-27
    • 2015-03-18
    • 1970-01-01
    • 2015-10-19
    • 2021-09-03
    • 2015-07-30
    • 1970-01-01
    • 1970-01-01
    • 2022-12-17
    相关资源
    最近更新 更多