使用 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