Ana içeriğe geç

WSGI'yi Dahil Etme - Flask, Django ve Diğerleri

🌐 Yapay Zekâ ve İnsanlar Tarafından Çeviri

Bu çeviri, insanlar tarafından yönlendirilen bir yapay zekâ ile oluşturuldu. 🤝

Orijinal anlamın yanlış anlaşılması ya da kulağa doğal gelmeme gibi hatalar içerebilir. 🤖

Yapay zekâyı daha iyi yönlendirmemize yardımcı olarak bu çeviriyi iyileştirebilirsiniz.

İngilizce sürüm

WSGI uygulamalarını Alt Uygulamalar - Mount Etme, Bir Proxy Arkasında bölümlerinde gördüğünüz gibi mount edebilirsiniz.

Bunun için WSGIMiddleware'ı kullanabilir ve bunu WSGI uygulamanızı (örneğin Flask, Django vb.) sarmalamak için kullanabilirsiniz.

WSGIMiddleware Kullanımı

Bilgi

Bunun için a2wsgi kurulmalıdır; örneğin pip install a2wsgi ile.

WSGIMiddlewarea2wsgi paketinden import etmeniz gerekir.

Ardından WSGI (örn. Flask) uygulamasını middleware ile sarmalayın.

Ve sonra bunu bir path'in altına mount edin.

from a2wsgi import WSGIMiddleware
from fastapi import FastAPI
from flask import Flask, request
from markupsafe import escape

flask_app = Flask(__name__)


@flask_app.route("/")
def flask_main():
    name = request.args.get("name", "World")
    return f"Hello, {escape(name)} from Flask!"


app = FastAPI()


@app.get("/v2")
def read_main():
    return {"message": "Hello World"}


app.mount("/v1", WSGIMiddleware(flask_app))

Not

Önceden, fastapi.middleware.wsgi içindeki WSGIMiddleware'ın kullanılması öneriliyordu, ancak artık kullanımdan kaldırıldı.

Bunun yerine a2wsgi paketini kullanmanız önerilir. Kullanım aynıdır.

Sadece a2wsgi paketinin kurulu olduğundan emin olun ve WSGIMiddlewarea2wsgi içinden doğru şekilde import edin.

Kontrol Edelim

Artık /v1/ path'i altındaki her request Flask uygulaması tarafından işlenecektir.

Geri kalanı ise FastAPI tarafından işlenecektir.

Eğer uygulamanızı çalıştırıp http://localhost:8000/v1/ adresine giderseniz, Flask'tan gelen response'u göreceksiniz:

Hello, World from Flask!

Ve eğer http://localhost:8000/v2 adresine giderseniz, FastAPI'dan gelen response'u göreceksiniz:

{
    "message": "Hello World"
}