gpt4 book ai didi

python - 当我在 gunicorn 上运行 Flask 应用程序时设置 app.wsgi_app = ProxyFix(app.wsgi_app) 会发生什么?

转载 作者:IT老高 更新时间:2023-10-28 21:14:20 24 4
gpt4 key购买 nike

我使用 Flask 构建了一个基本的 Web 应用程序,并且能够使用其原生 http 服务器从虚拟机运行它。我很快意识到,通过这种设置,请求被阻塞(我无法对资源进行并发请求;任何新请求都会等到之前的请求完成),并决定尝试使用 gunicorn 运行应用程序来解决这个问题。我关注了documentation ,特别是用这一行运行:

gunicorn -w 4 -b 127.0.0.1:4000 myproject:app 

但是,它无法启动这样做,并提示没有 WSGI 应用程序。我在网上翻了一下,发现很多人发布了一些例子,包括以下内容:

from werkzeug.contrib.fixers import ProxyFix
app.wsgi_app = ProxyFix(app.wsgi_app)

我添加了它,它解决了我的问题。我很困惑,因为这显然是为了解决在 HTTP 代理后面服务的问题,但是添加 gunicorn 会强制使用 HTTP 代理吗?还是我总是在代理后面,而 Flask 的内置服务器并不重要?

另外,Werkzeug's documentation on Fixers警告“出于安全原因,请勿在非代理设置中使用此中间件。”考虑到修复显然是必要的,我可以假设我正在设置代理吗?

最佳答案

您需要显示定义您的 Flask 应用程序“app”的代码。

“应用程序”在哪里定义?您是从另一个文件导入它吗?

这是我重现该问题的尝试:

$ cat myproject.py
from flask import Flask

app = Flask(__name__)

@app.route("/")
def index():
return "ok"

$ bin/gunicorn -w 4 -b 127.0.0.1:4000 myproject:app &
[1] 27435

2014-03-04 12:18:36 [27435] [INFO] Starting gunicorn 18.0
2014-03-04 12:18:36 [27435] [INFO] Listening at: http://127.0.0.1:4000 (27435)
2014-03-04 12:18:36 [27435] [INFO] Using worker: sync
2014-03-04 12:18:36 [27441] [INFO] Booting worker with pid: 27441
2014-03-04 12:18:36 [27442] [INFO] Booting worker with pid: 27442
2014-03-04 12:18:36 [27445] [INFO] Booting worker with pid: 27445
2014-03-04 12:18:36 [27448] [INFO] Booting worker with pid: 27448

$ curl http://127.0.0.1:4000/
ok

如您所见,它运行良好。在这种情况下,您绝对不需要 ProxyFix。

关于python - 当我在 gunicorn 上运行 Flask 应用程序时设置 app.wsgi_app = ProxyFix(app.wsgi_app) 会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20584336/

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