fastApi框架隐藏没多大意义的Schemes模型部分内容
之前有篇文章提到python框架fastApi怎么关闭接口文档、隐藏部分接口以及关闭Schemes,但并没有实现关闭schemes的功能。http://www.04007.cn/article/936.htmlSchemes这个部分看着不爽啊,而且烦的是它默认打开着的,占了页面很大的一个高度,今天看着不爽就想了想办法。 之前的想法是从fastAPI框架层去关闭它的功能,但找了找框架文档,fastAPI框架也许认为这个东西很有意义吧,根本没有提供阉割它的入口,今天换了个想法,不去干掉它就去把它隐藏掉呗,在页面查看了...[>>…]
FastAPI框架使用枚举来型来限定参数
FastAPI框架验证时,有时需要通过枚举的方式来限定参数只能为某几个值中的一个,这时就可以使用FastAPI框架的枚举类型Enum了。代码如下: #引入Enum模块 fromfastapiimportFastAPI fromenumimportEnum classSexModel(str,Enum): man="man" woman="woman" app=FastAPI() @app.get("/model/{sexmodel}") #sexmodel:SexModel限定参数必须是sexmodel:SexModel枚举中的 asyncdefget_model(sexmodel:SexModel): #也可以不用下面的判断方法,添加了上面的模型会自动限定 #枚举判断方法1, ifmod...[>>…]
Python中的值类型、引用类型以及类的-静态-变量
Python中的数据类型分为值类型和引用类型,值类型通常包含int、float、bool、str、tuple,值类型是不可变的。引用类型包含list、set、dict类型,引用类型是可变的。在python的面向对象中,类不存在像其它语言中存在的static关键词,因此不能使用修饰实现类的静态变量。python面向对象中只有实例变量和类变量两变量概念,根本不存在静态变量的概念。 接下来我们来看下面这个例子以及其运行结果,结果中有横线来区分开每个执行结果,比较好分别,如下: #定义四个方法...[>>…]
python实现单例模式的常用三种方法-基于__new__,使用装饰器
涉及到类的使用就会有类的实例化,就会有类单例实现的需求,因为重复实例化会浪费资源。python中的单例模式与别的语言相比,单例实现的方法更丰富。虽然python实现单例的模式的方法有很多,不过在体验后我觉得有必要了解和掌握的也就是使用模块和使用装饰器两种,然后了解一下使用__new__方法实现单例。1.使用python模块Python模块本身就包含了一个单例实现逻辑,在第一次导入时,会生成.pyc文件,之后导入,就会直接加载.pyc,因此如果在我们在模块中new实例对象,然后在其它的地方直接引用...[>>…]
python后台任务的实现-asyncio协程和fastApi框架的BackgroundTasks
在某些时间我们前端向服务端发送请求后,服务端后面的处理前端并不关心,这时服务端可以提前向前端反馈结果,自己的后端处理逻辑可以放后台处理。当然可以使用一些消息队列来实现例如RabbitMQ或Redis等消息/作业队列管理器。这里是直接基于程序去实现的方法,且目前很多种语言都已经实现类似的处理,python也不例外。python自3.4版本起标准库中引入了asyncio协程,python3.5中加入async/await特性,asyncio协程就可以实现后台任务。 asyncio-异步I/O是python用来编写...[>>…]
Fastapi框架对YmdHis格式的时间日期验证
Fastapi框架带了不少的验证,除了支持int、str、float、bool数据类型作为参数外,还可以使用其他一些数据类型。比如UUID,Decimal。在时间日期方面支持datetime,有datetime.datetime:python内置时间类型datetime.datetime,2008-09-15T15:53:00+05:00datetime.date:python内置日期类型datetime.date,2008-09-15datetime.time:python内置时间类型datetime.time,14:23:55.003datetime.timedelta:python内置时间间隔类型datetime.timedelta,秒为单位,显示为float &nb...[>>…]
gunicorn服务器gunicorn_conf.py常用配置详解
gunicorn配置可通过gunicorn启动命令行中设定,也可通过配置文件指定。使用配置文件更加方便。不过今天在配置gunicorn_conf的日志配置时碰到了access_log_format无效,gunicorn的日志配置相关参数有4个,分别是accesslog,access_log_format,errorlog,loglevel。accesslog:访问日志路径,同nginx的access_log;accesslog='/logs/gunicorn.access.log'accesslog='-'#记录到标准输出,不会输出文件 #设置记录访问信息的日志的格式,如下使用: access_log_format='%(h)s%(l)s%(u)s%(t)s' acc...[>>…]
FastAPI项目uvicorn-gunicorn-fastapi服务端docker容器的平滑重启
在部署FastAPI项目至服务器时,会涉及到代码更改之后服务器端的重启问题,使用nginx服务器时-sreload就可以完成热加载,同样使用tiangolo/uvicorn-gunicorn-fastapi作为python项目的服务器端环境时也可以实现。 gunicorn服务,只需要向其发送HUP信号,即可实现平滑reload。tiangolo/uvicorn-gunicorn-fastapi项目在运行的时候会先加载gunicorn_conf.py配置文件,可能的路径有如下,默认优先使用第3个:1./app/gunicorn_conf.py存在即加载2./app/app/gunicorn_conf.py...[>>…]
python常用时间验证及日期时间戳转换
python年月日日期验证、python年月日时间转换成时间戳、python时间戳转换年月日时间格式及示例代码如下: #python年月日日期验证 fromdatetimeimportdatetime defvalidate(datechar): try: #%Y-%m-%d格式验证 returndatetime.strptime(datechar,'%Y-%m-%d') #%Y-%m-%d%H:%M:%S格式验证 returndatetime.strptime(datechar,'%Y-%m-%d%H:%M:%S') exceptValueError: returnFalse #python年月日时间转换成时间戳 importtime defdate_to_stamp(date,flag=0): datechar=(date+'00:00:00')ifnotflagelsedate+'23:5...[>>…]
FastApi关闭接口文档、隐藏部分接口以及关闭schemes
FastApi框架可以直接生成自带的接口文档,但在使用的时候我们会碰到如下的真实需求。1.测试环境提供接口文档并测试,但是线上环境不能暴露这些信息。2.某些模块中我们可能有的方法不想暴露出来。3.页面中显示的Schemas作用并不大,有时不如不展现。怎么处理?FastApi提供了一些方法。1.要关闭接口文档,FastAPI在对象实例化的时候可以传递docs_url和redoc_url两个参数,用以配置这两个接口地址的自定义,同时也支持直接传None用以表示关闭接口方文档,如下: fromfastapiimportFastAPI #关闭接口文档 app=FastAPI(doc...[>>…]