使用 uWSGI 运行 Flask 应用程序

内置的 werkzeug 服务器当然不适合运行生产服务器。最明显的原因是 werkzeug 服务器是单线程的,因此一次只能处理一个请求。

因此,我们希望使用 uWSGI 服务器来代替我们的应用程序。在这个例子中,我们将安装 uWSGI 并使用它运行一个简单的测试应用程序。

安装 uWSGI

pip install uwsgi

它是如此简单。如果你不确定你的 pip 使用的 python 版本是否明确:

python3 -m pip install uwsgi  # for python3
python2 -m pip install uwsgi  # for python2

现在让我们创建一个简单的测试应用程序:

app.py

from flask import Flask
from sys import version

app = Flask(__name__)

@app.route("/")
def index():
    return "Hello uWSGI from python version: <br>" + version

application = app

在 Flask 中,应用程序的常规名称是 app,但 uWSGI 默认查找 application。这就是我们在最后一行为我们的应用程序创建别名的原因。

现在是时候运行应用程序了:

uwsgi --wsgi-file app.py --http :5000

你应该通过将浏览器指向 localhost:5000 来看到消息“Hello uWSGI …”

为了不在每次都输入完整命令,我们将创建一个 uwsgi.ini 文件来存储该配置:

uwsgi.ini

[uwsgi]
http = :9090
wsgi-file = app.py
single-interpreter = true
enable-threads = true
master = true

httpwsgi-file 选项与手动命令中的选项相同。但还有三个选择:

  • single-interpreter:建议打开它,因为它可能会干扰下一个选项

  • enable-threads:如果你在应用程序中使用其他线程,则需要打开它。我们现在不使用它们,但现在我们不必担心它。

  • master:应该出于各种原因启用主模式

现在我们可以使用此命令运行应用程序:

uwsgi --ini uwsgi.ini