我有一些通过 Flask 提供的静态文件。根据给定的请求,我运行一些处理和身份验证,然后提供文件。我一直在使用 Flask 的 send_from_directory
来做到这一点,但看起来它会缓存文件一段时间,这对我来说没有好处。我在 nginx 后面运行 Flask,因此我愿意通过 nginx 部分提供服务,但我需要在提供文件之前运行处理/身份验证。
所以,主要问题是,假设我需要在服务之前在 Flask 中进行处理/身份验证,如何使用 Flask 和 nginx 提供未缓存的静态文件?
注意:我已经看到详细说明如何通过 nginx 提供文件的答案,但这对我来说没有好处,因为我必须在提供之前在 Flask 中进行处理。
最佳答案
默认情况下,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
方法。
关于python - 通过 Flask 和 Nginx 提供静态文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30655022/