我有一些我通过Flask服务的静态文件。在给定的请求上,我运行一些处理和身份验证,然后提供该文件。我一直在使用Flask的send_from_directory
这样做,但看起来有点缓存文件,这对我没有好处。我让Flask在nginx后面运行,所以我愿意通过nginx部分服务,但我需要在文件获得服务之前运行处理/身份验证。
所以,主要的问题是,我如何使用Flask和nginx提供未缓存的静态文件,假设我需要在服务之前在Flask中进行处理/身份验证?
注意:我已经看到详细说明如何通过nginx提供文件的答案,但这对我没有好处,因为我必须在服务之前在Flask中进行处理。
答案 0 :(得分:4)
默认情况下,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
方法。