fastapi在vscode中运行推荐环境配置 (二)

要想启动fastapi我们需要依赖一个python服务器,在fastapi中本篇介绍2种.如果使用pycharm启动,可以参考下面类似案例,正常来说vscode能启动,pycharm都没问题。

前提

需要先进行虚拟环境的配置。如果还不知道如何配置,可以参考下面的文章先配置后在下一步。

vscode中的python环境搭建

编写启动配置launch.json

一般有两种常用服务器推荐uvicorn和granian

使用uvicorn

参数--reload运行热更新,端口配置为8888,默认是8000

json 复制代码
{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "lga", // 调试器名称
      "type": "debugpy", // 使用 VS Code 推荐的 Python 调试器
      "request": "launch", // 启动新进程(而非附加到现有进程)
      "module": "uvicorn", // 指定通过 uvicorn 模块启动应用
      "args": ["main:app", "--reload", "--port", "8888",], // 启动参数
      "justMyCode": false, // 允许调试第三方库代码
      "env": {
        "PYDEVD_DISABLE_FILE_VALIDATION": "1" // 禁用冻结模块检测(解决某些环境报错)
      }
    }
  ]
}

使用granian

granian是用rust写的一个python服务器,目前是python中最快的服务器,所以也是比较推荐的一个方案

参数运行热更新,端口8888,access-log参数必须,否则没有任何日志输出

json 复制代码
{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "lga", // 调试器名称
      "type": "debugpy", // 使用 VS Code 推荐的 Python 调试器
      "request": "launch", // 启动新进程(而非附加到现有进程)
      "module": "granian", // 指定通过 granian 模块启动应用
      "args": ["main:app", "--interface", "asgi", "--reload", "--port", "8888","--access-log"], // 启动参数
      "justMyCode": false, // 允许调试第三方库代码
      "env": {
        "PYDEVD_DISABLE_FILE_VALIDATION": "1" // 禁用冻结模块检测(解决某些环境报错)
      }
    }
  ]
}

然后我们可以点击f5进行启动或者左侧的面板按钮启动。

特别说明PYDEVD_DISABLE_FILE_VALIDATION 设置1一般是在有对要打包成可执行文件需要,否则有可能报错。

代码启动方案

这个方案pycharm也能用,需要改一点点的代码

main.py

ini 复制代码
if __name__ == "__main__":
    Env.start()
ini 复制代码
class Env:
    @staticmethod
        def start():
            import uvicorn
            app = FastAPI()
            uvicorn.run(app, host="0.0.0.0", reload=False, port=8888, workers=1)

为啥一个文件就搞定要拆呢?这个是一个优化技巧,如果将uvicorn的导入放在全局,当其他模块导入这个文件时,可能会触发uvicorn的导入,在我打包时候,然后启动了多个worker出现了疯狂的reload,导致不可用。所以如果写在入口文件,实际上这start函数代码是我简化后的。还得处理app的日志配置。全写在入口文件,这代码感觉不是很简洁,入口文件main.py我个人倾向简单点。细节封装里面显得优雅。

最后按启动按钮即可

相关推荐
80530单词突击赢10 分钟前
JavaWeb进阶:SpringBoot核心与Bean管理
java·spring boot·后端
B站_计算机毕业设计之家15 分钟前
豆瓣电影数据采集分析推荐系统 | Python Vue Flask框架 LSTM Echarts多技术融合开发 毕业设计源码 计算机
vue.js·python·机器学习·flask·echarts·lstm·推荐算法
渣渣苏23 分钟前
Langchain实战快速入门
人工智能·python·langchain
爬山算法30 分钟前
Hibernate(87)如何在安全测试中使用Hibernate?
java·后端·hibernate
lili-felicity32 分钟前
CANN模型量化详解:从FP32到INT8的精度与性能平衡
人工智能·python
数据知道35 分钟前
PostgreSQL实战:详解如何用Python优雅地从PG中存取处理JSON
python·postgresql·json
WeiXiao_Hyy1 小时前
成为 Top 1% 的工程师
java·开发语言·javascript·经验分享·后端
ZH15455891311 小时前
Flutter for OpenHarmony Python学习助手实战:面向对象编程实战的实现
python·学习·flutter
玄同7651 小时前
SQLite + LLM:大模型应用落地的轻量级数据存储方案
jvm·数据库·人工智能·python·语言模型·sqlite·知识图谱
User_芊芊君子1 小时前
CANN010:PyASC Python编程接口—简化AI算子开发的Python框架
开发语言·人工智能·python