Python全局常量即跨文件全局变量的替代实现方法
常量是不变的变量,在Python中,常量通常用大写的变量名表示。但事实上,Python并没有严格的常量概念。python有内置的常量,而且只有6个,分别是True、False、None、NotImplemented、Ellipsis、__debug__。在Python中并没有直接的方法或命令去声明一个全局常量。甚至python中就没有关于全局常量数据类型的定义。Python对变量关键词的查找顺序为:局部命名空间->全局命名空间->内置命名空间。找不到变量名,它将会放弃查找并引发一个NameError异常。其中内置名称(built-innames)是Pyt...[>>…]
FastAPI获取和记录每个http请求(包括post数据实体)
在使用FastAPI的时候,我想对每个请求进行记录,包括框架接口返回的422类参数不符合要求的接口,同时把所有请求的原始post数据和返回的json等数据进行记录,之前在这篇文章:http://www.04007.cn/article/957.html里到是提到了可以使用request_exception_handler在异常的时候获取请求实体,但不适合正常的请求中处理,所以这次需要寻找新的办法。 找了不少办法,目前还是下面的这个办法比较好用。首先我们是使用FastAPI官网的middleware中间件,注册一个http中间件,...[>>…]
一个好用的图片验证码python程序
要做一个图片验证码,不想自己造轮子,就到网上找一些代码或者项目,找了一些代码都不大好使用还需要调试,git上的一些项目要么累赘,要么不好用,最后找到了这个simpel_captcha项目,简单轻巧又好用。我这里使用的是FastAPI框架,这套程序也非常方便地结合FastAPI或者starlette中的StreamingResponse返回图片验证码,分享一下: GITEE地址:https://toscode.gitee.com/antonizhu/simpel_captcha 里面就是captcha和img_captcha两相模块,capt...[>>…]
Python程序requests报Temporary failure in name resolution
业务之前一直运行正常,但这几天运行运行出现报错。 loadjsonfailed:HTTPSConnectionPool(host='...',port=443):Maxretriesexceededwithurl:(CausedbyNewConnectionError('<urllib3.connection.VerifiedHTTPSConnectionobjectat0x7f6e3bf41790>:Failedtoestablishanewconnection:[Errno-3]Temporaryfailureinnameresolution 找到了出错的地方,就是python中使用requests.get的时候报的“名称解析暂时失败”。域名解析失败我们当然有解决办法。1.是进入/etc/hosts中添加对应域名的解析...[>>…]
Python程序requests报Temporary failure in name resolution
业务之前一直运行正常,但这几天运行运行出现报错。loadjsonfailed:HTTPSConnectionPool(host='...',port=443):Maxretriesexceededwithurl:(CausedbyNewConnectionError('<urllib3.connection.VerifiedHTTPSConnectionobjectat0x7f6e3bf41790>:Failedtoestablishanewconnection:[Errno-3]Temporaryfailureinnameresolution 找到了出错的地方,就是python中使用requests.get的时候报的“名称解析暂时失败”。域名解析失败我们当然有解决办法。1.是进入/et...[>>…]
Python使用RSA实现非对称加解密
Python使用RSA非对称加解密需要依赖Crypto库。不然会报Nomodulenamed'Crypto'的错误。Crypto库是一个用c++编写的密码类库。Crypto算法库在python中最初叫pycrypto,之后没有再更新过,后来有人在此基础上写了个替代库pycryptodome。这个库目前只支持python3,因此要使用Crypto(Python3.*),直接安装pipinstallpycryptodome。Crypto库中的功能分类如下:常见对称密码在Crypto.Cipher库下,主要有:DES3DESAESRC4Salsa20非对称密码在Crypto.PublicKey库下,主要有:RSAECCDSA哈希密码在Crypt...[>>…]
Python使用pip安装install模块时指定默认源
经常安装的时候收到提示:WARNING:Retrying(Retry(total=4,connect=None,read=None,redirect=None,status=None))afterconnectionbrokenby'ConnectTimeoutError(<pip._vendor.urllib3.connection.HTTPSConnectobjectat0x00000195FDBFC6A0>,'Connectiontopypi.orgtimedout.(connecttimeout=15)')':/simple/crypto/这和本地的网络限制和网速有关,之前在docker容器中也碰到过类似情形,见地址:http://www.04007.cn/article/1034.html 可以通过指定python源的方式来进行安装,如下指定源为...[>>…]
FastApi自定义接口文档/docs中的静态资源文件
之前写过一篇文章:http://www.04007.cn/article/915.html是通过修改fastapi的库文件里的代码来实现接口文档/docs中静态资源文件修改为本地文件,但这样的方法并不是一个好方法,因为在部署环境时要去修改镜像里的库文件代码,不正规不方便。实际fastapi在其文档里有相关的功能描述,地址https://fastapi.tiangolo.com/advanced/extending-openapi/?h=get_swagger_ui_html#serve-the-static-files其中的例子简化修改一下如下: #引入库要的库 fromfastapiimportFastAPI fromfastapi.openapi....[>>…]
pip安装sentence-transformers时的一些报错记录
之前记的一些记录,也不知道是什么时候记下来的,不想删除放这里存着吧。pip3install-Usentence-transformerspip3install-Utransformers下载太慢甚至超时,urllib3.exceptions.ReadTimeoutError:HTTPSConnectionPool(host='files.pythonhosted.org',port=443):Readtimedout。直接指定下载源,解决问题。也可以配置vim~/pip/pip.conf文件中的源地址,一劳永逸。pipinstall-ihttps://pypi.douban.com/simple-Usentence-transformersModuleNotFoundError:Nomodulenamed'setuptools_rust' 解决办法:升级pip,然后再...[>>…]
使用tiangolo/uvicorn-gunicorn-fastapi镜像搭建的服务端产生core.*文件
在使用tiangolo/uvicorn-gunicorn-fastapi镜像搭建的python服务端程序目录中发现一些core.*文件,数量不一定,偶尔有多个。示例如下,平均每个文件约50M左右,非文本文件无法查看内容。-rw-------1rootroot47255552Mar1117:22core.34931-rw-------1rootroot47215112Mar1117:22core.12341-rw-------1rootroot47122552Mar1117:22core.12341 觉得问题出现的很奇怪,程序中没有生成这个文件的逻辑,于是去查看请求日志和错误日志,在gunicorn_error.log里查到了对应的时间中出现了如下这种错误内...[>>…]