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里查到了对应的时间中出现了如下这种错误内...[>>…]
Python使用clickhouse_driver操作clickhouse数据库
Python要实现使用clickhouse_driver操作clickhouse数据库,首先需要安装clickhouse_driver模块:pipinstallclickhouse_driverPIP安装的时候有时会遇到WARNING:Retrying(Retry(total=4,connect=None,read=None,redirect=None,status=None))afterconnectionbrokenby'NewConnectionError('<pip._vendor.urllib3.connection.HTTPSConnectionobjectat0x7fd06b379a90>:Failedtoestablishanewconnection:[Errno-3]Temporaryfailureinnameresolution')':/simple/clickhouse-driver/。如果不是...[>>…]
Python程序中pymysql的connections.py报错:raise err.InterfaceError(0
在Python程序中遇到了一个报错raiseerr.InterfaceError(0,""),pymysql.err.InterfaceError:(0,'')详细报错内容如下。 File"/usr/local/lib/python3.8/site-packages/pymysql/connections.py",line479,inrollback self._execute_command(COMMAND.COM_QUERY,"ROLLBACK") File"/usr/local/lib/python3.8/site-packages/pymysql/connections.py",line793,in_execute_command raiseerr.InterfaceError(0,"") pymysql.err.InterfaceError:(0,'') 从报错的提示来看是MYSQL...[>>…]
Python中读取程序中的进程和线程ID
程序调试的时候有时需要看看当前程序的进程和线程ID,可以使用如下的方法。 #引入OS和psutil库 importos importpsutil importthreading #取得python进程数据 pid=os.getpid() p=psutil.Process(pid) print('PID:%d'%pid) print('PNAME:%s'%p.name()) print(p.__dict__) #取得线程ID数据 t=threading.currentThread() print("TID:%d"%t.ident) print("TID:%d"%t.name) print("TNAME:%S"%t.getName()) print(t.__dict__) #print(p)打印出来的结果 psutil.Process(pid=14572,name='python.ex...[>>…]
Pymysql中Mysql连接默认会开启事务处理-数据表名行数列表SQL
PyMySQL是Python3.x版里用于连接处理MySQL业务的库,在之前的Python2版本中是使用mysqldb,使用时引入类库后直接执行connect方法,其中要注意的两个选项,设置connect_timeout控制连接时间,设置cursorclass=pymysql.cursors.DictCursor从而使mysql返回的结果中包含字段,如果不设置执行完毕返回的结果集默认以元组形式。如下示例: #导入pymysql连接database importpymysql con=pymysql.connect( host="", user="", password="", database="", port="", cursorclass=pymysql.cursors.Dic...[>>…]
tiangolo/uvicorn-gunicorn-fastapi镜像服务端python程序中的时区问题
在使用tiangolo/uvicorn-gunicorn-fastapi镜像搭建的服务端后台程序,修改了docker容器中的/etc/timezone配置值,gunicorn的日志时间已经正常地显示成了北京时间,但在python程序中使用importtime程序输出的数据中仍然是UTC时间。 #cat/etc/timezone Asia/Shanghai #容器中时区 dockercontainerapp#date ThuJun1201:34:30UTC2021 #python中程序输出时间问题 print(time.strftime("%Y-%m-%d-%H_%M_%S",time.localtime())) 解决办法:python程序取时间使用的是time.lo...[>>…]