FastAPI框架使用枚举来型来限定参数、FastApi框架隐藏没多大意义的Schemes模型部分内容以及常见的WSGI服务器Gunicorn、uWSGI了解
一、FastAPI框架使用枚举来型来限定参数
FastAPI框架验证时,有时需要通过枚举的方式来限定参数只能为某几个值中的一个,这时就可以使用FastAPI框架的枚举类型Enum了。publish:December 23, 2020 -Wednesday 代码如下:
#引入Enum模块
from fastapi import FastAPI
from enum import Enumclass SexModel(str, Enum):man = "man"woman = "woman"app = FastAPI()@app.get("/model/{sexmodel}")
# sexmodel: SexModel限定参数必须是sexmodel: SexModel枚举中的
async def get_model(sexmodel: SexModel): #也可以不用下面的判断方法,添加了上面的模型会自动限定#枚举判断方法1,if model_name == SexModel.man: #...#枚举判断方法2if model_name.value == "woman": #...#默认判断方法return {"model_name": model_name}
PS一下关于python中的相等判断,Python中对象包含三个基本要素:id(身份标识)、type(数据类型)、value(值),is和==都可以用于对象比较,但依据不同:
==:是比较操作符,比较的依据是value(值);只要值相等则相等。
is:同一性运算符,比较的依据是id(内存地址),即两个对象是否是同一个对象;

二、FastApi框架隐藏没多大意义的Schemes模型部分内容
之前有篇文章提到python框架fastApi怎么关闭接口文档、隐藏部分接口以及关闭Schemes,但并没有实现关闭schemes的功能。https://linge.blog.csdn.net/article/details/142592679 Schemes这个部分看着不爽啊,而且烦的是它默认打开着的,占了页面很大的一个高度,今天看着不爽就想了想办法。
之前的想法是从fastAPI框架层去关闭它的功能,但找了找框架文档,fastAPI框架也许认为这个东西很有意义吧,根本没有提供阉割它的入口,今天换了个想法,不去干掉它就去把它隐藏掉呗,在页面查看了一下源码想着应该可以通过修改JS或者css将其隐藏。
不过修改CSS/JS文件的话就不能引用框架默认带的云上的静态文件,可以通过修改框架docs.py来调整其调用本地的静态文件,正好之前我因为外网请求被屏蔽解决了这个问题,方法详见:https://linge.blog.csdn.net/article/details/142558667 于是要实现隐藏干掉fastApi框架的Schemes部分就可以在本地调试了。
修改静态资源: swagger-ui.css 在最后添加如下内容,刷新页面即可实现隐藏Schemes部分。
.swagger-ui section.models .no-margin{display:none;}.swagger-ui section.models h4{display:none;}
#. 评论转载:
Level : 1. User:us20201223131715-923 Time:2021-04-02 10:11:33
似乎这样 .swagger-ui section.models{display:none;} 就可以了,不会留下那个边框线。

三、常见的WSGI服务器Gunicorn、uWSGI了解
常见的WSGI服务器有:
1.Gunicorn:
Gunicorn是使用Python实现的WSGI服务器, 提供http服务, 并在worker工作方式上提供了多种选择, 其默认的work_class是sync,即同步阻塞的网络模型,性能不佳。其它的工作方式还有
eventlet、gevent(利用python协程实现)、tornado(利用Tornado框架实现)、gthread(采用线程工作模式)、gaiohttp(利用aiohttp库实现异步I/O,支持web socket)。在多进程模式中除了使用多CPU的同时, 还可以使用协程来提供并发支撑。和nginx类似,Gunicorn也是一个pre-fork worker的模型,从Ruby的独角兽(Unicorn )项目移植。
2.uWSGI:
uWSGI是使用C写的, 在worker进程处理循环中解析http请求后, 使用python的C接口生成environ对象, 再把这个对象作为参数传到WSGI application函数中调用,整个过程中除了python处理调用application是使用的python,其它都是C程序处理, 性能上会有更好的表现。注意全部小写的uwsgi是一种通信协议,不过只是uWSGI服务器自有的协议,uWSGI实现了uwsgi协议, 主要是考虑在uWSGI服务器前有使用Nginx作为负载均衡的情况, 避免请求在Nginx和在Nginx转发到uWSGI时重复解析, uWSGI为了追求性能, 设计了uwsgi协议, 在Nginx解析完以后直接把解析好的结果通过uwsgi协议转发到uWSGI服务器, uWSGI拿到请求按格式生成environ对象, 而不用重复解析请求。
3.Uvicorn
Uvicorn是一个超快速的ASGI服务器,使用uvloop和httptools实现,uvicorn是一个基于asyncio开发的一个轻量级高效的web服务器框架。Uvicorn实现了一个基于ASGI(异步服务器网关接口)的最小的应用程序接口。目前支持http,websockets,Pub/Sub 广播,并且可以扩展到其他协议和消息类型。Uvicorn仅支持python 3.5.3以上版本。
4.bjoern
bjoern是个快速、超轻量级的WSGI服务器软件,为CPython编写。使用C语言开发,基于Libev事件库和http-parser开发,这是一个单线程的服务,占用内存非常低。
上面列的也不全,目前运用最多的还是Gunicorn和uWSGI,Uvicorn可能因为方便在开发模式下用得较多。另外有些网站上把Sanic也列成了一个服务器,Sanic是一个类似于Flask的Python 3.5+ 快速Web服务器和开发框架,接触过一段时间,觉得挺不错的。比FastApi的设计感觉更符合用户的使用体验。不过用作服务器还是没进行过多了解。
相关文章:
FastAPI框架使用枚举来型来限定参数、FastApi框架隐藏没多大意义的Schemes模型部分内容以及常见的WSGI服务器Gunicorn、uWSGI了解
一、FastAPI框架使用枚举来型来限定参数 FastAPI框架验证时,有时需要通过枚举的方式来限定参数只能为某几个值中的一个,这时就可以使用FastAPI框架的枚举类型Enum了。publish:December 23, 2020 -Wednesday 代码如下: #引入Enum模块 from fa…...
OceanBase—02(入门篇——对于单副本单节点,由1个observer扩容为3个observer集群)——之前的记录,当初有的问题未解决,目前新版未尝试
OceanBase—02(入门篇——对于单副本单节点,由1个observer扩容为3个observer集群)——之前的记录,有的问题未解决,新版未尝试 1、前言—安装单副本单节点集群1.1 docker安装OB 2、查看现有集群情况2.1 进入容器&#x…...
前沿论文创新点集合
系列文章目录 文章目录 系列文章目录一、《LAMM: Label Alignment for Multi-Modal Prompt Learning》二、《MaPLe: Multi-modal Prompt Learning》三、《Learning to Prompt for Vision-Language Models》CoOp四、《MobileCLIP: Fast Image-Text Models through Multi-Modal R…...
刷题记录(好题)
Problem - D - Codeforces 思路: 滑动窗口思想,一个数组记录起始点(记录出现过的次数),另一个数组记录截至点(记录出现过的次数),从0开始遍历,设定一个长度为d的滑动窗口…...
【大数据入门 | Hive】函数{单行函数,集合函数,炸裂函数,窗口函数}
1. 函数简介: Hive会将常用的逻辑封装成函数给用户进行使用,类似于Java中的函数。 好处:避免用户反复写逻辑,可以直接拿来使用。 重点:用户需要知道函数叫什么,能做什么。 Hive提供了大量的内置函数&am…...
python sqlite3 工具函数
起因, 目的: sqlite3 最常用的函数。 比如,某人给了一个 database.db 文件。 但是你登录的时候,不知道账号密码。 此文件就是,查看这个数据库的详细内容。 有哪些表某个表的全部内容。添加数据 代码, 见注释 impor…...
顺丰Android面试题集锦及参考答案
TCP 三次握手和四次挥手是什么,挥手过程中主动方的状态是什么? TCP 三次握手是建立连接的过程: 第一次握手:客户端向服务器发送一个 SYN 报文,该报文包含客户端的初始序列号(seq=x)。此时客户端进入 SYN_SENT 状态。第二次握手:服务器收到客户端的 SYN 报文后,向客户端…...
uniapp中检测应用更新的两种方式-升级中心之uni-upgrade-center-app
uniapp一个很是用的功能,就是在我们发布新版本的app后,需要提示用户进行app更新,并告知用户我们新版的app更新信息,以使得用户能及时使用上我们新开发的功能,提升用户的实用度和粘性。注意:这个功能只能在app端使用 效…...
Python爬虫通过 Cookie 和会话管理来维持其在网站上的会话状态
Python 爬虫虽然是一个热门且非常实用的技术领域,但在实际开发中,确实存在一些困难的地方。以下是 Python 爬虫开发中常见的难点和挑战: 1. 处理反爬虫机制 许多网站为防止爬虫的恶意访问,采取了各种反爬虫措施。常见的反爬虫技…...
使用STM32单片机实现无人机控制系统
无人机控制系统是无人机的大脑,负责处理无人机的姿态控制、导航和通信等功能。本文将详细介绍如何使用STM32单片机实现无人机控制系统,包括硬件设计、软件设计、系统调试与测试等内容。 一、系统概述 无人机控制系统通常包括飞行控制器、传感器、执行器…...
【包教包会】2D图片实现3D透视效果(支持3.x、支持原生、可合批)
将去年写的SpriteFlipper从2.x升级到3.x。 如果需要2.x版本或需要了解算法思路,请移步:https://blog.csdn.net/weixin_42714632/article/details/136745051 优化功能:可同时绕X轴和Y轴旋转,两者效果会叠加。 完美适配Web、原生…...
解决nginx+tomcat宕机完美解决方案
问题描述:公司项目太老了,还是tomcat项目,部署两台tomcat,做了nginx负载。最近发现每到上午10,下午3点,tomcat就宕机了,死活找不到原因,客户影响超期差,实在让人头疼。 解决思路&am…...
第十一章 缓存之更新/穿透/雪崩/击穿
目录 一、什么是缓存 二、缓存更新策略 2.1. 缓存主动更新策略 2.1.1. Cache Aside模式(主流) 2.1.2. Read/Write Through模式 2.1.3. Write Behind模式 2.1.4. 总结 三、缓存穿透 四、缓存雪崩 五、缓存击穿 5.1. 互斥锁实现 5.1.1…...
一款完全开源并免费的监测与分析系统,支持监测,预警,分析,报告,支持本地化部署(附源码)
前言 在当今这个信息爆炸的时代,企业和个人都需要时刻了解网络上的动态,以便及时了解自身品牌形象和社会舆论的变化。然而,现有的舆情监测工具往往价格昂贵,且cao作复杂,难以满足普通用户的需求。 在这种背景下&…...
python中时间函数及其应用
近段时间,因在改写以前写的学校自动铃声控制系统,又学到了一些新的知识,特记录如下: 一、时间函数基础 1、time模块中的函数及其用法 time.time(): 返回当前时间的时间戳,即自1970年1月1日以来的秒数。 time.localt…...
MoveIt2-humble】入门教程----第一个 C++ MoveIt 程序
四节教程会手把手带你写一个完整的 Moveit 控制程序,包括轨迹规划、RViz可视化、添加碰撞物体、抓取和放置。 1 创建依赖包 进入到教程所在工作空间下的src目录,创建一个新的依赖包。 ros2 pkg create \--build-type ament_cmake \--dependencies mov…...
watch命令:周期执行指定命令
一、命令简介 watch 命令用于周期性地执行指定的命令,并显示其输出结果。 二、命令参数 2.1 命令格式 watch [选项] 命令2.2 选项 -n, --interval: 指定更新间隔时间(以秒为单位)。默认间隔时间为 2 秒。-d, --difference…...
【ADC】噪声(1)噪声分类
概述 本文学习于TI 高精度实验室课程,总结 ADC 的噪声分类,并简要介绍量化噪声和热噪声。 文章目录 概述一、ADC 中的噪声类型二、量化噪声三、热噪声四、量化噪声与热噪声对比 一、ADC 中的噪声类型 ADC 固有噪声由两部分组成:第一部分是量…...
网络安全概述:从认知到实践
一、定义 网络安全,即致力于保护网络系统所涵盖的硬件、软件以及各类数据,切实保障其免遭破坏、泄露或者篡改等不良情形的发生。 二、重要性 个人层面:着重于守护个人隐私以及财产安全,为个人在网络世界中的各项活动提供坚实的保…...
Vue.js组件开发研究
摘要 随着前端技术的快速发展,Vue.js以其轻量级、高性能和组件化开发的优势,在前端开发领域占据了重要地位。本研究深入探讨了Vue.js组件开发的理论基础、开发方法以及实际应用。通过系统梳理Vue.js框架的核心特性、组件化思想及Vue.js组件的基本概念&am…...
docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...
SCAU期末笔记 - 数据分析与数据挖掘题库解析
这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...
iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...
ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...
微服务商城-商品微服务
数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)
本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...
快刀集(1): 一刀斩断视频片头广告
一刀流:用一个简单脚本,秒杀视频片头广告,还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农,平时写代码之余看看电影、补补片,是再正常不过的事。 电影嘛,要沉浸,…...
