FastAPI Vercel 部署未启动应用程序

问题描述 投票:0回答:2

我无法让 API 在 Vercel 上运行,在本地运行就可以了。

由于我也是第一次使用Vercel,所以我似乎找不到日志。构建日志工作正常(它告诉我 6 个静态页面,其余 0 个),但是当我转到部署页面时,它为我提供了

404
(不是来自我的 API)。

端口

8000
根本不加载任何东西。

Vercel.json

{
    "version": 2,
    "builds": [
        {
            "src": "main.py",
            "use": "@vercel/python"
        }
    ],
    "routes": [
        {
            "src": "/(.*)",
            "dest": "app/api.py"
        }
    ]
}

main.py

import uvicorn
from os import getenv

if __name__ == "__main__":
    port = int(getenv("PORT", 8000))
    uvicorn.run("app.api:app", host="0.0.0.0", port=port, reload=True)

api.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/", tags=["Root"])
async def read_root():
    return {"message": "Welcome to this fantastic app!"}

项目结构

app
 |- models/
 |- routes/
 |- __init__.py
 |- api.py
 |- database.py
main.py
requirements.txt
Vercel.json

我在这里缺少什么?我尝试使用 Vercel CLI 和

Vercel .
进行部署,并提交到我的 GitHub 存储库,这有效。 API 似乎没有运行。

python deployment fastapi vercel uvicorn
2个回答
1
投票

将您的

vercel.json
文件更改为

{
    "version": 2,
    "builds": [
        {
            "src": "/app/api.py",
            "use": "@vercel/python"
        }
    ],
    "routes": [
        {
            "src": "/(.*)",
            "dest": "app/api.py"
        }
    ]
}

0
投票

Vercel 的 Python 运行时默认部署到端口 3000。

此外,您的根目录中需要一个包含index.py的api目录,其中包含main.py的内容

© www.soinside.com 2019 - 2024. All rights reserved.