三周精通FastAPI:39 用FastAPI CLI命令行程序管理FastAPI项目

官方文档:https://fastapi.tiangolo.com/zh/fastapi-cli/

FastAPI CLI¶

FastAPI CLI 是一个命令行程序,你可以用它来部署和运行你的 FastAPI 应用程序,管理你的 FastAPI 项目,等等。

当你安装 FastAPI 时(例如使用 pip install FastAPI 命令),会包含一个名为 fastapi-cli的软件包,该软件包在终端中提供 fastapi 命令。

要在开发环境中运行你的 FastAPI 应用,你可以使用 fastapi dev 命令:

fastapi dev main.py INFO Using path main.py
INFO Resolved absolute path /home/user/code/awesomeapp/ main.py
INFO Searching for package file structure from directories with __init__.py files
INFO Importing from /home/user/code/ awesomeapp

╭─ Python module file ─╮
│ │
│ 🐍 main.py │
│ │
╰──────────────────────╯

INFO Importing module main
INFO Found importable FastAPI app

╭─ Importable FastAPI app ─╮
│ │
from main import app
│ │
╰──────────────────────────╯

INFO Using import string main:app

╭────────── FastAPI CLI - Development mode ───────────╮
│ │
│ Serving at: http://127.0.0.1:8000 │
│ │
│ API docs: http://127.0.0.1:8000/docs │
│ │
│ Running in development mode, for production use: │
│ │
fastapi run
│ │
╰─────────────────────────────────────────────────────╯

INFO: Will watch for changes in these directories: ['/home/user/code/awesomeapp']
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO: Started reloader process [ 2265862] using WatchFiles
INFO: Started server process [ 2265873]
INFO: Waiting for application startup.
INFO: Application startup complete.
 

该命令行程序 fastapi 就是 FastAPI CLI

FastAPI CLI 接收你的 Python 程序路径,自动检测包含 FastAPI 的变量(通常命名为 app)及其导入方式,然后启动服务。

在生产环境中,你应该使用 fastapi run 命令。🚀

在内部,FastAPI CLI 使用了 Uvicorn,这是一个高性能、适用于生产环境的 ASGI 服务器。😎

fastapi dev

当你运行 fastapi dev 时,它将以开发模式运行。

默认情况下,它会启用自动重载,因此当你更改代码时,它会自动重新加载服务器。该功能是资源密集型的,且相较不启用时更不稳定,因此你应该仅在开发环境下使用它。

默认情况下,它将监听 IP 地址 127.0.0.1,这是你的机器与自身通信的 IP 地址(localhost)。

fastapi run

当你运行 fastapi run 时,它默认以生产环境模式运行。

默认情况下,自动重载是禁用的

它将监听 IP 地址 0.0.0.0,即所有可用的 IP 地址,这样任何能够与该机器通信的人都可以公开访问它。这通常是你在生产环境中运行它的方式,例如在容器中运行。

在大多数情况下,你会(且应该)有一个“终止代理”在上层为你处理 HTTPS,这取决于你如何部署应用程序,你的服务提供商可能会为你处理此事,或者你可能需要自己设置。

"提示"

你可以在 deployment documentation 获得更多信息。

实践

测试源码

从以前学习的代码里选一个执行,比如apimeta.py

from fastapi import FastAPIdescription = """
ChimichangApp API helps you do awesome stuff. 🚀## ItemsYou can **read items**.## UsersYou will be able to:* **Create users** (_not implemented_).
* **Read users** (_not implemented_).
"""app = FastAPI(title="ChimichangApp",description=description,summary="Deadpool's favorite app. Nuff said.",version="0.0.1",terms_of_service="http://example.com/terms/",contact={"name": "Deadpoolio the Amazing","url": "http://x-force.example.com/contact/","email": "dp@x-force.example.com",},license_info={"name": "Apache 2.0","url": "https://www.apache.org/licenses/LICENSE-2.0.html",},
)@app.get("/items/")
async def read_items():return [{"name": "Katana"}]

fastapi dev开发模式执行

fastapi dev apimeta.py 

启动后显示

INFO     Using path apimeta.py                                     
INFO     Resolved absolute path                                    /Users/skywalk/work/fastapi/apimeta.py                    
INFO     Searching for package file structure from directories with__init__.py files                                         
INFO     Importing from /Users/skywalk/work/fastapi                ╭─ Python module file ─╮                                          │                      │                                          │  🐍 apimeta.py       │                                          │                      │                                          ╰──────────────────────╯                                          INFO     Importing module apimeta                                  
INFO     Found importable FastAPI app                              ╭─ Importable FastAPI app ──╮                                     │                           │                                     │  from apimeta import app  │                                     │                           │                                     ╰───────────────────────────╯                                     INFO     Using import string apimeta:app                           ╭────────── FastAPI CLI - Development mode ───────────╮           │                                                     │           │  Serving at: http://127.0.0.1:8000                  │           │                                                     │           │  API docs: http://127.0.0.1:8000/docs               │           │                                                     │           │  Running in development mode, for production use:   │           │                                                     │           │  fastapi run         

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/11283.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Bean实例化

Bean有3种实例化方法 1.通过无参构造方法实例化 假如我们有以下结构: 这里我们在无参构造方法种打印字符串: 然后我们运行 可知,IoC管理bean进行实例化的时候是通过无参构造方法实例化的。 2.静态工厂实例化 假设我们有以下配置文件&…

【网络安全】线程安全分析及List遍历

未经许可,不得转载。 文章目录 线程线程安全问题遍历List的方式方式一方式二方式三方式四(Java 8)方式五(Java 8 Lambda)遍历List的同时操作ListVector是线程安全的?使用线程安全的CopyOnWriteArrayList使用线程安全的List.forEach线程 线程是程序执行的最小单位。一个程…

ReactPress 安装指南:从 MySQL 安装到项目启动

ReactPress Github项目地址:https://github.com/fecommunity/reactpress 欢迎Star。 ReactPress 是一个基于 React 的开源发布平台,适用于搭建博客、网站或内容管理系统(CMS)。本文将详细介绍如何安装 ReactPress,包括…

caozha-whois(域名Whois查询源码)

caozha-whois,是一个采用原生PHP写的域名Whois查询模块,支持全球大部分域名的whois查询,支持中文域名在内的多种域名后缀,包括:.com,.net,.cn,.com.cn,.org,.…

2024 年(第 7 届)“泰迪杯”数据分析技能赛A 题 自动化生产线数据分析 完整代码结果分享

一、背景 随着信息技术的快速发展,工业自动化领域的智能控制系统日益完善。自动化生产线能够独立完成从物料输送到元件抓取,再到产品安装和质量检验的各个环节,这不仅极大提升了制造效率和产品质量,也有效降低了生产成本。 为了使…

探索Python自动化新境界:Invoke库的神秘面纱

文章目录 **探索Python自动化新境界:Invoke库的神秘面纱**第一部分:背景介绍第二部分:Invoke库是什么?第三部分:如何安装Invoke库?第四部分:Invoke库函数使用方法1. 定义任务2. 执行任务3. 任务…

Qt_day4_Qt_UI设计

目录 Qt_UI设计 1. Designer 设计师(掌握) 2. Layout 布局(重点) 2.1 基本使用 2.2 高级用法 2.3 代码布局(了解) 3. Designer与C的关系(熟悉) 4. 基本组件(掌握…

conda和conda的常用命令

目录 一、什么是conda 1. conda的定义和作用 2. conda的特点 3. conda与pip的区别 二、conda的常用命令 1. 环境管理 2.包管理 3. 查看信息 4. 清理和维护 5. 频道(channel)管理 6. 导出和复制环境 7. 加速相关(镜像) 一、什么是conda 1. conda的定义和作用 2. co…

基于STM32通过TM1637驱动4位数码管详细解析(可直接移植使用)

目录 1. 单位数码管概述 2. 对应编码 2.1 共阳数码管 2.2 共阴数码管 3. TM1637驱动数码管 3.1 工作原理 3.1.1 读键扫数据 3.1.2 显示器寄存器地址和显示模式 3.2 时序 3.2.1 指令数据传输过程(读案件数据时序) 3.2.2 写SRAM数据…

16.UE5拉怪机制,怪物攻击玩家,伤害源,修复原视频中的BUG

2-18 拉怪机制,怪物攻击玩家、伤害源、黑板_哔哩哔哩_bilibili 目录 1.实行行为树实现拉怪机制 1.1行为树黑板 1.2获取施加伤害对象(伤害源) 2.修复原视频中,第二次攻击怪物后,怪物卡在原地不动的BUG 3.怪物攻击玩…

【JavaEE初阶 — 多线程】内存可见性问题 volatile

1. 内存可见性问题 内存可见性的概念 什么是内存可见性问题呢? 当一个线程对共享变量进行了修改,那么另外的线程都是立即可以看到修改后的最新值。在Java中,可以借助 synchronized、volatile 以及各种Lock 实现可见性。如果我们将变量声…

3195. 有趣的数-13年12月CCF计算机软件能力认证(组合数)

题目 思路 统计方案的时候先去分类,先放01,然后在考虑23对于第k类, 对于01的选择 对于所有的分类:本题我觉得要考虑的几个点就是:状态分类得到数学公式组合数的计算防越界处理 代码 计算组合数的代码模板&#xff1…

goframe开发一个企业网站 开发环境DOCKER 搭建16

Docker开发环境搭建的优势 环境一致性 消除"在我机器上能运行"的问题保证开发、测试、生产环境的一致性新成员可以快速搭建完整开发环境 快速部署 一键启动所有依赖服务配置文件版本控制环境迁移方便快捷 资源隔离 避免不同项目依赖冲突系统资源可控便于多版本…

C++builder中的人工智能(20):如何在C++中开发一个简单的Hopfield网络

在AI技术的发展历史中,模式识别模型是最伟大的AI技术之一,尤其是从像素图像中读取文本。其中一个是Hopfield网络(或称为Ising模型的神经网络或Ising–Lenz–Little模型),这是一种递归神经网络形式,由John J…

【Leetcode 中等】34. 在排序数组中查找元素的第一个和最后一个位置

原题链接 Leetcode 34. 在排序数组中查找元素的第一个和最后一个位置 题目 给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。 你必…

金融学期末速成笔记

【拯救者】金融学速成(基础习题) 重点: 市场经济是发达的商品经济。在市场经济条件下,市场机制作为资源配置方式,发挥基础性作用。 除具有商品经济的一般特征外,与商品经济相比,市场经济还具有一些新的特征…

云计算复习文档

云计算复习文档 一 云计算概述 名词: 云计算 1.0 : 面向数据中心管理员的IT基础设施资源虚拟化阶段 通过计算虚拟化技术将企业IT应用与底层的基础设施彻底分离、解耦 将多个企业IT应用实例及运行环境复用在相同的物理服务器上,并通过虚…

【Docker容器化技术】docker安装与配置、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库

文章目录 一、Docker的安装与配置1、docker概述2、安装docker3、docker架构4、配置镜像加速器 二、Docker命令1、服务相关命令2、镜像相关命令3、容器相关命令 三、Docker容器数据卷1、数据卷概念及作用2、配置数据卷3、配置数据卷容器 四、Docker应用部署实战1、部署MySQL2、部…

window11安装elasticsearch+Kibana

1、下载elasticsearch与elasticsearch 下载elasticsearch 查看elasticsearch对应的Kibana版本 下载elasticsearch解压后文件目录如下 可执行脚本文件,包括启动elasticsearch服务、插件管理、函数命令等 bin配置文件目录,如elasticsearch配置、角色配置、jvm配置等 conf 默认…

云技术基础学习

声明 学习内容来自 B站 up 主《泷羽 sec》,如涉及侵权等问题,请及时联系,本人将马上删除文章。在此郑重声明,文章仅限于交流学习,任何其他违法行为与本人及泷羽 sec 无关。请务必遵守法律法规,切莫越过法律…