在IIS下运行FastAPI

2024-05-29 07:00:11 发布

您现在位置:Python中文网/ 问答频道 /正文

目前,我在一些内部IIS站点的子目录下运行了一个简单的API。现在我想用FastAPI重写API可能是个好主意。在IIS上运行API并不困难,您必须在IIS配置中创建一个web.config等等。我知道这是在使用WSGI,但是否也有可能使用ASGI(可能与uvicorn和gunicorn结合使用)

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

我做了一些研究,但没有找到解决办法。也许你们中的一位对此有一些经验。如果是,请分享。非常感谢

你好,托马斯


Tags: apiwebconfigwsgi站点iisasgi主意
1条回答
网友
1楼 · 发布于 2024-05-29 07:00:11

我的回答太长,一句话也说不出来,但它不是一个确定的答案

  1. 我没有完全理解WSGI/ASGI的内容?您想继续与Fastapi一起运行Flask api吗?那么Fastapi就可以做到了。检查文档https://fastapi.tiangolo.com/advanced/wsgi/。在此,我报告这个例子
from fastapi import FastAPI
from fastapi.middleware.wsgi import WSGIMiddleware
from flask import Flask, escape, request

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))
  1. 你说的子目录是什么意思?您可以将代码放在您想要的任何目录中,然后从那里运行它。相反,如果您希望两个应用程序在同一IP地址上运行,据我所知,您唯一的机会就是运行一个网关,将以/api开头的请求转发到Fastapi服务器,将所有其他请求转发到其他服务器

根据注释进行编辑

  1. How can I fix FastAPI application error on Apache WSGI?。服务器需要与ASGI工作人员兼容。我不知道你在运行哪个web服务器,所以我什么都不能说

  2. 这一点应该已经回答了你的问题,不是吗

相关问题 更多 >

    热门问题