IIS下运行FastAPI

Tho*_*ger 3 python iis wsgi asgi fastapi

目前,我有一个简单的 API,在某个内部 IIS 站点的子目录下与 Flask 一起运行。现在我认为使用 FastAPI 重写该 API 可能是个好主意。在 IIS 上运行 API 并不是一件难事,您必须web.config在 IIS 配置中创建一些内容。我知道这是使用 WSGI,但是也有可能使用 ASGI(也许与 uvicorn 和 Gunicorn 结合使用)?

重要的一件事是它必须在某个子目录下运行,称之为<iis_internal_company_server>/myapi。在 Flask 中,我包含了一个众所周知的前缀中间件,它可以按预期工作。我正在寻找类似的 FastAPI,这是否可以使用app.include_router(router, prefix='/myapi')

做了一些研究但没有找到解决方案。也许你们中的一个人对此有一些经验。如果有,请分享。提前谢谢了。

问候,托马斯

小智 6

就我而言,在 IIS 上部署使用 wfastcgi.py

首先请安装a2wsgi

pip install a2wsgi
Run Code Online (Sandbox Code Playgroud)

在main.py中

from fastapi import FastAPI
from a2wsgi import ASGIMiddleware

app = FastAPI()

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

wsgi_app = ASGIMiddleware(app)
Run Code Online (Sandbox Code Playgroud)

在 web.config 的 appSettings 中添加此键

<add key="WSGI_HANDLER" value="main.wsgi_app" />
Run Code Online (Sandbox Code Playgroud)