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的设计感觉更符合用户的使用体验。不过用作服务器还是没进行过多了解。

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

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

相关文章

一张图片生成数字人的3D发型:技术创新与应用前景

随着人工智能(AI)和计算机图形学的不断进步,从单张肖像图像生成3D数字头发的技术正在变得越来越成熟。这项技术不仅能够处理复杂的编织和未编织发型,还能在虚拟现实、电影制作和美容行业中找到广泛的应用。本文将详细介绍一种创新的3D头发重建技术,探讨其关键特性、技术创…

Dit架构 diffusion范式分类+应用

1.ping 网址 2.ssh nscc/l20 3.crtl,打开vscode的setting 4.win 10修改ssh配置文件及其密钥权限为600 - 晴云孤魂 - 博客园 整体来看: 使用transformer作为其主干网络,代替了原先的UNet 在latent space进行训练,通过transformer处理潜…

搬砖 网盘一键转存源码

网盘一键转存源码,免费资源没测试 网盘一键转存源码,可以将您的百度网盘资源一键转存到。并支持后台设置开屏广告 源码截图: 下载地址: https://yuncv.lanzouw.com/i8dZk2btyl4h

04. maven 三种项目打包方式 pom、jar、war 的区别(记一次 Spring 项目启动报错)

文章目录 1. 记一次 Spring 项目启动报错1.1 现象1.2 分析1.3 过程复现 2. maven 项目三种打包方式的区别 1. 记一次 Spring 项目启动报错 1.1 现象 我在项目下创建了一个子模块,然后又将该子模块移除,之后启动报错,如下: com.…

深入理解 Java 对象的内存布局

对于 Java 虚拟机,都知道其内存区域划分成:堆、方法区、虚拟机栈等区域。但一个对象在 Java 虚拟机中是怎样存储的,相信很少人会比较清楚地了解。Java 对象在 JVM 中的内存布局,是了解并发编程同步机制的基础。 在 HotSpot 虚拟机…

通信工程学习:什么是IOT物联网

IOT:物联网 IOT物联网(Internet of Things,简称IoT)是一种通过信息传感设备,按约定的协议,将任何物体与网络相连接,以实现智能化识别、定位、跟踪、监管等功能的技术体系。以下是对IOT物联网的详…

Windows 通过 Docker 安装 GitLab

1. 安装 Docker Desktop 下载网站:Windows | Docker Docs 2. 拉取 GitLab Docker 镜像 打开 PowerShell 或 命令提示符,拉取 GitLab 镜像: docker pull gitlab/gitlab-ee:latest或则使用社区版: docker pull gitlab/gitlab-ce…

电脑无法无线投屏的解决办法

在前司的时候经常遇到电脑无法使用无线投屏器的情况,今天就来聊聊如何解决。 1.不会连接。这种情况,经常发生在WIN10升级WIN11之后,一般是两种办法,一种是同时按键盘上的WINDOWS和K键,右下角就会出来连接的图标&#…

showdoc二次开发

showdoc用的vue版本老,需要安装老版本nodejs,比如node 14.21.3 win32-x64-93_binding.node问题 https://github.com/sass/node-sass/releases 下载 web_src\node_modules\node-sass\vendor\win32-x64-93 下面重命名为binding.node 代理到php后端&…

2-114 基于matlab的CA模型

基于matlab的CA模型,Singer模型对单机动目标进行跟踪算法,具有10页实验文档。采用蒙特卡罗方法对一个二坐标雷达对一平面上运动的目标进行观测,得到跟踪滤波结果。程序已调通,可直接运行。 下载源程序请点链接:2-114 …

Crypto虐狗记---”你“和小鱼(八)

前言:剧情八 提示: 下载: 只给了公钥 那么可以用RsaCtfTool去分离公钥---》 得到(e,n): 如何安装参考: kail下安装RsaCtfTool - 九皋777 - 博客园 (cnblogs.com) 已知n,那么去得到p q 或者使…

OBOO鸥柏丨深圳科学展馆引入液晶拼接屏中控宣传协议互动大屏

科技馆的展厅展区,宛如一扇通往未来世界的璀璨窗口,巧妙融合了OBOO鸥柏LCD液晶拼接屏的尖端显示技术,液晶拼接墙与沉浸式体感交互的梦幻体验交织成一幅幅生动的科技画卷。这里,中控协议的精准对接,如同智慧之网的织就者…

whisper 实现语音识别 ASR - python 实现

语音识别(Speech Recognition),同时称为自动语音识别(英语:Automatic Speech Recognition, ASR),将语音音频转换为文字的技术。 whisper是一个通用的语音识别模型,由OpenAI公司开发。…

家具城管理平台———未来之窗行业应用跨平台架构

一、家具城商城管理数字化 家具城商城电子化管理优势显著。能实时精确掌控库存,及时补货并降低积压。通过销售数据的精准分析,把握市场需求,优化采购与营销。提升客户服务,记录购买历史以提供个性化体验。简化采购,自动…

leetcode 力扣算法题 快慢指针 双指针 19.删除链表的倒数第n个结点

删除链表的倒数第N个结点 题目要求题目示例解题思路从题目中的已知出发思考寻找目标结点条件转换核心思路 需要注意的点改进建议 完整代码提交结果 题目要求 给你一个链表,删除链表的倒数第n个结点,并且返回链表的头结点。 题目示例 示例 1&#xff1…

微信小程序和抖音小程序的分享和广告接入代码

开发完成小程序或者小游戏之后,我们为什么要接入分享和广告视频功能,主要原因有以下几个方面。 微信小程序和抖音小程序接入分享和广告功能主要基于以下几个原因: 用户获取与增长:分享功能可以帮助用户将小程序内容传播给更多人&…

Crypto虐狗记---”你“和小鱼(外传)

前言:剧情十(我没看见还有一个。。。。) 提示: 下载: 参数有了,直接搞就行。。。 参考: *crypto*练2--攻防世界--easy_ECC - kubopiy - 博客园 (cnblogs.com) 大佬的脚本: 攻防世界 easy_ECC - diakla -…

鸿蒙next开发第一课03.ArkTs语法介绍-案例

前面已经学习了ArkTs的基本语法和DevEcoStudio的基本操作,接下来按照官方提示开发一个基本案例。 该案例是系统自带的demo,下载下来源代码后可以直接运行。 接下来我来演示如何运行demo。我在demo中加入了自己的注释。 切记:文件夹不能有中…

遥感滑坡目标检测数据集 2300张 滑坡 带标注 voc yolo 1类

遥感滑坡目标检测数据集 2300张 滑坡 带标注 voc yolo 1类 分类名: (图片张数, 标注个数) landsI ide: (2299,6545) 总数: (2314, 6545) 总类(nc): 1类 遥感滑坡目标检测数据集 (Remote Sensing Landslide Detection Dataset) 数据集概述 该…

深入了解Python:那些常被忽略的知识点

作为现代编程语言的典范,Python以其简洁、高效和广泛的应用领域赢得了无数开发者的青睐。然而,即使是经验丰富的Python程序员,也可能不了解Python的一些特性或最佳实践。这篇文章将介绍Python中常被忽略的一些知识点,通过全面的分…