FastAPI框架使用枚举来型来限定参数、FastApi框架隐藏没多大意义的Schemes模型部分内容以及常见的WSGI服务器Gunicorn、uWSGI了解

news2024/11/27 12:43:45

一、FastAPI框架使用枚举来型来限定参数

    FastAPI框架验证时,有时需要通过枚举的方式来限定参数只能为某几个值中的一个,这时就可以使用FastAPI框架的枚举类型Enum了。publish:December 23, 2020 -Wednesday 代码如下:

#引入Enum模块
from fastapi import FastAPI
from enum import Enum

class 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:  
        #...
	#枚举判断方法2
    if 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的设计感觉更符合用户的使用体验。不过用作服务器还是没进行过多了解。

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

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

相关文章

【自注意力与Transformer架构在自然语言处理中的演变与应用】

背景介绍 在自然语言处理(NLP)领域,序列到序列(seq2seq)模型和Transformer架构的出现,极大地推动了机器翻译、文本生成和其他语言任务的进展。传统的seq2seq模型通常依赖于循环神经网络(RNN&…

【idea】切换多个仓库到一个分支

需求描述 打开个一个Project 里面包含多个子项目,每一个子项目都有一个自己的git仓库。在idea 中有没有一次性把多个项目切换到同一个分支上面。 解决方案 右键git -> branch 点击右上角的此轮 勾选Execute Branch Operations on All Roots 点击ommon Remote …

萱仔求职复习系列——2 Linux的常用方法(包含基础进阶高级操作)

由于最近接了一个笔试,发现笔试可能涉及到Linux,我准备临时抱佛脚一下赶紧复习一下Linux的用法哈哈。Linux 的基础用法包含文件系统操作、权限管理、网络配置、进程管理等基本命令;进阶操作包括网络调试、包管理、服务管理和用户管理等&#…

【jdk19虚拟线程 VS 普通线程】

文章目录 一.什么是虚拟线程二.虚拟线程与普通线程的区别1.普通线程2.虚拟线程3. 实际应用中的区别 三.上demo对比性能。1.线程池配置2.Service实现3.测试结果 四.小结 一.什么是虚拟线程 虚拟线程,也称作轻量级线程,是由JVM直接管理的线程类型&#xf…

jmeter入门:脚本录制

1.设置代理。 网络连接-》代理-》手动设置代理. ip: 127.0.0.1, port:8888 2. add thread group 3. add HTTP(s) test script recorder, target controller chooses Test plan-> thread Group 4. click start. then open the browser …

Golang | Leetcode Golang题解之第467题环绕字符串中唯一的子字符串

题目: 题解: func findSubstringInWraproundString(p string) (ans int) {dp : [26]int{}k : 0for i, ch : range p {if i > 0 && (byte(ch)-p[i-1]26)%26 1 { // 字符之差为 1 或 -25k} else {k 1}dp[ch-a] max(dp[ch-a], k)}for _, v :…

Java主流框架项目实战——SpringBoot入门

单元1-1 1) IDEA工具安装好 2) Maven安装,配置好 IDEA安装及永久试用 配置maven 单元1-2 使用aliyun(https://start.aliyun.com/)创建一个spring boot项目,hello world! 构建项目 1)构建项目 直接默认…

MicroFlow:一种高效的基于Rust的TinyML推理引擎

英文论文标题:MICROFLOW: AN EFFICIENT RUST-BASED INFERENCE ENGINE FOR TINYML 中文论文标题:MicroFlow:一种高效的基于Rust的TinyML推理引擎 作者信息: Matteo Carnelos,意大利帕多瓦大学,Grepit AB,…

什么软件可以晚上睡觉录音

什么软件可以晚上睡觉录音,在日常生活中,我们常常忽略夜间的声音,然而这些声音有时可能会揭示重要信息,比如打鼾情况、说梦话、甚至是潜在的睡眠问题。因此,一款适合夜间录音的软件对于关注健康及生活细节的人来说至关…

在IDEA中配置Selenium和WebDriver

前言: 在当今自动化测试和网络爬虫的领域,Selenium是一个被广泛使用的工具。它不仅能够模拟用户与浏览器的交互,还能进行网页测试和数据抓取。而为了使用Selenium与谷歌/Edge浏览器进行自动化测试,配置合适的WebDriver至关重要。本…

【时时三省】(C语言基础)指针笔试题8

山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 笔试题8 c是个数组 它的每个元素是char* 它初始化了四个字符串 把这四个字符串的首字符的地址 传到了c里面 cp有四个元素 每个元素的类型是char** 所以c3指向FORST c2指向POINT c1指向NE…

数学建模算法与应用 第9章 支持向量机及其方法

目录 9.1 支持向量机的基本原理 核函数的种类: 9.2 支持向量机的Matlab命令及应用 Matlab代码示例:二分类支持向量机 9.3 乳腺癌的诊断案例 Matlab代码示例:乳腺癌数据分类 9.4 支持向量回归(SVR) Matlab代码示…

uibot发送邮件:自动化邮件发送教程详解!

uibot发送邮件的操作指南?uibot发送邮件的两种方式? 在现代办公环境中,自动化流程的引入极大地提高了工作效率。uibot发送邮件功能成为了许多企业和个人实现邮件自动化发送的首选工具。AokSend将详细介绍如何使用uibot发送邮件。 uibot发送…

【AIGC】寻找ChatGPT最佳推理步骤:CoT思维链技术的探索与应用

博客主页: [小ᶻZ࿆] 本文专栏: AIGC | ChatGPT 文章目录 💯前言💯CoT思维链概述💯CoT思维链在大型语言模型中的应用💯CoT思维链改变对模型推理能力的理解和改进方式多样化应用场景挑战与未来发展总结 &#x1f4a…

鸿蒙NEXT开发-动画(基于最新api12稳定版)

注意:博主有个鸿蒙专栏,里面从上到下有关于鸿蒙next的教学文档,大家感兴趣可以学习下 如果大家觉得博主文章写的好的话,可以点下关注,博主会一直更新鸿蒙next相关知识 专栏地址: https://blog.csdn.net/qq_56760790/…

用FPGA做一个全画幅无反相机

做一个 FPGA 驱动的全画幅无反光镜数码相机是不是觉得很酷? 就是上图这样。 Sitina 一款开源 35 毫米全画幅 (3624 毫米) CCD 无反光镜可换镜头相机 (MILC),这个项目最初的目标是打造一款数码相机,将 SLR [单镜头反光] 相机转换为 DSLR [数码…

探索Semantic Kernel:开启AI编程新篇章(入门篇)

文章目录 一、引言二、什么是Semantic Kernel?三、为什么选择Semantic Kernel?四、Semantic Kernel的核心特性4.1企业级4.2 自动化业务流程4.3 模块化和可扩展性 五、Semantic Kernel入门5.1 安装SDK5.2 编写控制台应用1. 配置2.实例3.示例一&#xff1a…

【漏洞复现】某知识付费纯净发卡小程序系统存在SQL注入漏洞

漏洞描述 知识吾爱纯净版小程序源码,附详细视频+文字教程【小白可0基础搭建】跟随教程步骤即可简单搭建属于自己的知识付费小程序,实现支付变现+流量主收益,快速建立自己的IP知识付费小程序源码包括以下功能:会员管理:支持用户注册、登录、个人信息管理等功能,以及会员等…

《系统架构设计师教程(第2版)》第18章-安全架构设计理论与实践-01-安全架构概述

文章目录 1. 信息安全面临的威胁2. 安全架构的定义和范围2.1 安全架构的概念2.2 安全架构的范围2.3 安全架构应具备的特性2.4 安全技术2.5 过程 3. 与信息安全相关的国内外标3.1 国外标准3.2 国内标准3.2.1 标准缩写含义3.2.2 主要技术标准1)国家标准2)特…

安全网络架构

网络安全解决方案是指通过一系列技术和措施来保护网络系统和数据的安全。它涉及多个方面,包括网络设备的防护、数据的加密和备份、安全策略的制定和执行等。以下是一些常见的网络安全解决方案: 防火墙:防火墙是一种硬件或软件设备&#xff0c…