uvicorn在PyCharm运行正常 部署到Deta服务器报错如何解决
FastAPI本地正常、Deta部署报错修复方案
问题现象
基于Python开发的FastAPI应用,在本地PyCharm环境通过uvicorn可完全正常运行,上传项目文件到Deta平台部署时触发报错。
项目现有导入代码片段:
from typing import Union import uvicorn
已尝试排查操作:
- 切换uvicorn为最新版本测试,问题复现
- 切换uvicorn为0.17.1版本测试,问题复现
问题根因
报错本质是Deta平台运行机制和本地运行逻辑的差异导致:Deta部署Python Web应用时,会使用平台内置适配的进程管理器启动服务,不需要开发者手动引入、启动uvicorn。手动导入uvicorn、在依赖文件中声明uvicorn版本,都会和平台预置的运行时依赖产生冲突,和uvicorn本身的版本号无关,因此切换版本无法解决问题。
修复操作
- 移除代码中所有uvicorn相关逻辑:删除
import uvicorn导入语句,同时删除代码末尾用于本地启动的if __name__ == "__main__": uvicorn.run(...)代码块 - 确认项目入口文件(默认为根目录下的
main.py)直接暴露名为app的FastAPI实例,最小可用示例:
from fastapi import FastAPI from typing import Union app = FastAPI() @app.get("/") def root(): return {"service": "running"}
- 检查根目录下的
requirements.txt文件,删除其中所有uvicorn相关的依赖声明,仅保留业务代码需要的第三方依赖(比如fastapi)即可,Web服务运行需要的底层依赖由平台自动适配 - 清空Deta平台旧部署的构建缓存,重新上传代码触发全新构建即可完成部署。
内容的提问来源于stack exchange,提问作者Sultan Al-otaibi
相关产品推荐
相关产品推荐

