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...[>>…]
使用Electron进行桌面端开发时的热加载方案
执行下面的npm命令安装electron-reloader。慢的话使用cnpm吧,安装成功后,package.json内容会自动修改。 #安装electron-reloader npminstall--save-develectron-reloader #package.json内容自动修改如下 { #package.json会自动增加devDependencies这项 "devDependencies":{ "electron":"^9.1.0", "electron-reloader":"^1.0.1" } } 需要我们操作的一步就是在main.js(Electron项目入口文件)文件中增加如下代码: #main.js文件修改 const{app,BrowserWindow}=require('electron') //热加...[>>…]
使用Electron进行win桌面端的开发
想试试桌面端的开发,但又不想去接触C#、WPF之类的语言,了解了一下,Electron是一个可以开发桌面端软件又和web开发有点关系的方案,Electron是由Github开发,基于Chromium和Node.js,使用JavaScript、HTML和CSS等Web技术创建跨平台原生桌面应用的框架。兼容Mac、Window和Linux,它构建的应用可在这三个操作系统上面运行,借助Electron,我们可以使用纯JavaScript来调用丰富的原生APIs。 Electron的开发环境搭建,我这里是Windows10,需要安装的环境包括Python、node...[>>…]
Python中的值类型、引用类型以及类的-静态-变量
Python中的数据类型分为值类型和引用类型,值类型通常包含int、float、bool、str、tuple,值类型是不可变的。引用类型包含list、set、dict类型,引用类型是可变的。在python的面向对象中,类不存在像其它语言中存在的static关键词,因此不能使用修饰实现类的静态变量。python面向对象中只有实例变量和类变量两变量概念,根本不存在静态变量的概念。 接下来我们来看下面这个例子以及其运行结果,结果中有横线来区分开每个执行结果,比较好分别,如下: #定义四个方法...[>>…]
python实现单例模式的常用三种方法-基于__new__,使用装饰器
涉及到类的使用就会有类的实例化,就会有类单例实现的需求,因为重复实例化会浪费资源。python中的单例模式与别的语言相比,单例实现的方法更丰富。虽然python实现单例的模式的方法有很多,不过在体验后我觉得有必要了解和掌握的也就是使用模块和使用装饰器两种,然后了解一下使用__new__方法实现单例。1.使用python模块Python模块本身就包含了一个单例实现逻辑,在第一次导入时,会生成.pyc文件,之后导入,就会直接加载.pyc,因此如果在我们在模块中new实例对象,然后在其它的地方直接引用...[>>…]
内网穿透工具frp的应用-frpc,frps
内网穿透即内网映射,可以将局域网变公网,从而可以让外网访问本地局域网内的服务。内网穿透原理技术有这么几种:1,通过公网服务器转发,这是目前市场上大多三方的内网穿透服务方式。2,P2P穿透,端对端连接通信,即常说的UDP打洞方式,受国内复杂网络环境影响打洞成功机率不高。3,通过公网服务器响应对二端握手穿透,穿透成功时直接二端P2P打洞直联。 内网穿透工具有很多,比如Ngrok、花生壳、frp。原理基本一样,这里主要了解一下FRP,frp分为客户端和服务端,frp...[>>…]
python后台任务的实现-asyncio协程和fastApi框架的BackgroundTasks
在某些时间我们前端向服务端发送请求后,服务端后面的处理前端并不关心,这时服务端可以提前向前端反馈结果,自己的后端处理逻辑可以放后台处理。当然可以使用一些消息队列来实现例如RabbitMQ或Redis等消息/作业队列管理器。这里是直接基于程序去实现的方法,且目前很多种语言都已经实现类似的处理,python也不例外。python自3.4版本起标准库中引入了asyncio协程,python3.5中加入async/await特性,asyncio协程就可以实现后台任务。 asyncio-异步I/O是python用来编写...[>>…]
高德地图通过将IP地址转换成经纬度-只能定位到城市范围
因业务需要,将IP地址转换成经纬度,记录一下。高德地图IP地址定位调用接口文档地址:https://lbs.amap.com/api/webservice/guide/api/ipconfig .调用方法很简单,先申请web服务API密钥(Key);注意根据你的调用方式选择key,我这里是通过web接口调用,所以选择web服务。不然会把key的类型错误。然后拼接HTTP请求URL,并带上第一步申请的Key;请求如下url:https://restapi.amap.com/v3/ip?ip=114.247.50.2&output=json&key=<用户的key>output可以是xml,也可以是json,如请...[>>…]
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...[>>…]