gpt4 book ai didi

python - 在执行一些数据库操作时在 Flask 中提供静态 HTML

转载 作者:行者123 更新时间:2023-12-01 04:00:56 24 4
gpt4 key购买 nike

我的 Flask 应用程序中有一个端点,我想在数据库中执行一些日志记录,然后在响应中提供静态 HTML 文件。终点如下所示:

@app.route("/man/<os>/<section>/<name>")

我有数千个不同的 HTML 文件,这取决于 URL,需要返回其中一个。我已配置 Nginx 来提供所有静态文件。但是,我在 Flask 中处理这些 URL,在数据库中进行日志记录,并通过请求模块传输 HTML 文件(见下文)

    host = request.host
path = 'man_pages/' + os + '/html' + section + '/' + name + '.html'
url = 'http://' + host + url_for('static', filename=path) #TODO don't hardcode the scheme
req = requests.get(url, stream=True)
return Response(stream_with_context(req.iter_content()), content_type=req.headers['content-type'])

这会导致向 Nginx 发出两个请求,我不认为这是最有效的方法。有什么方法可以在 Flask 应用程序中的数据库中进行日志记录,然后使用 Nginx 来提供静态 HTML 文件吗?

最佳答案

是的,只需一个请求即可完成。

其他 Web 服务器具有 X-Sendfile header ,并且 Flask 对其具有内置支持。

Nginx不支持这个头,它有类似的X-Accel-Redirect 。不幸的是,Flask does not support it

您必须配置 nginx 路由来支持它,并使 Flask 返回 X-Accel-Redirect header 。

看看xsendfile ,我认为这对你有用。

我不会为您提供完整的解决方案,因为我认为您只需要有关 X-Accel-Redirect header 的提示和一些指示。

其他一些有用的资源:

https://gist.github.com/jessejlt/1306827

http://www.mli.gmu.edu/toz/wordpress/2014/07/31/serving-files-with-flask-behind-nginx-gunicorn/

关于python - 在执行一些数据库操作时在 Flask 中提供静态 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36532539/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com