通过Flask和Nginx提供静态文件?

问题描述 投票:2回答:1

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

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

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

python nginx flask
1个回答
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方法。

© www.soinside.com 2019 - 2024. All rights reserved.