Python3.11版本uvicorn运行报错content = [STATUS_LINE[status_code]]
之前一直运行顺利的一段代码,突然运行的时候出现了报错httphttptools_impl.py..content=[STATUS_LINE[status_code]]。详细报错内容如下: #报错内容 awaitsend(message) File"C:Python3.11.0Libsite-packagesuvicornprotocolshttphttptools_impl.py",line499,insend content=[STATUS_LINE[status_code]] #涉及的程序部分 classAppException(Exception): def__init__(code...,message...) raiseAppException(code=801,message="格式错误") 排查发现使用raiseAppExc...[>>…]
Gunicorn日志:httptools.parser.errors.HttpParserInvalidMethodError: invalid HTTP method
使用Gunicorn和FastAPI搭建的服务端框架程序看到报错:self.parser.feed_data(data)File"httptools/parser/parser.pyx",line193,inhttptools.parser.parser.HttpParser.feed_datahttptools.parser.errors.HttpParserInvalidMethodError:invalidHTTPmethod 奇怪为什么会有这样的错误,因为我尝试过post/get混用及URL错误各种请求尝试都未出现这样的错误,这个报错是在什么条件下产生的呢?于是我使用ApiPost来测试请求,同时也发现ApiPost可以选择的方法很多,ApiPost...[>>…]
jsonable_encoder方法有点作用但还是有些缺陷
在使用fastAPI进行开发的时候,最烦的就是数据库里的时间字段,一般我们会增加create_time和update_time两个时间字段,而这两个字段都是timestamp类型,默认值CURRENT_TIMESTAMP。而这两种类型的字段在使用Pymysql读取数据库内容之后如果直接使用json输出会报错:TypeError:ObjectoftypedatetimeisnotJSONserializable,需要对每个这种类型的字段进行如下的另外处理。record["create_time"]=record["create_time"].strftime("%Y-%m-%d%H:%M:%S") 之后发现了这个jsonab...[>>…]
Python中使用requests发送application/json格式报文数据需注意事项
在Python项目对接开发中,通常可能会用到使用requests进行post报文数据,双方在对接的同时还会对发送的数据进行签名计算,因此传输的数据需要对应起来。Python中使用requests发送报文数据需注意发送的数据类型是application/json还是application/x-www-form-urlencoded数据。 python使用requests进行请求时有data和json两个参数,即可以用json也可以用data。但是是有区别的。建议如果对方是使用application/json,则使用json参数发送json数据。如果对方是application...[>>…]
FastAPI项目报错:requirements.InvalidRequirement: Parse error at "XXX": Expected stringEnd
之前一直运行正常的使用FastAPI搭建的python项目,今天突然运行不起来了,报错:pkg_resources.extern.packaging.requirements.InvalidRequirement:Parseerrorat"'ler'":ExpectedstringEnd。根据报错的提示找到文件位置和对应的文件代码如下: File"c:python386libsite-packagespkg_resources_vendorpackagingrequirements.py",line95,in__init__ classRequirement(object): def__init__(self,requirement_string): try: req=REQUIREMENT.parseString(requirement_string) exceptParseExcep...[>>…]
python中的日志模板logoru及常用参数配置解析
Python中有一个内置的日志标准库——logging,但开发中涉及到日志记录时,基本都不会采用它,因为其在配置上较为繁琐。同时在多线程或多进程的场景下,若不进行特殊处理还会导致日志记录异常。其替代品就是一个优雅、简洁的日志记录第三方库——loguru,导入封装的logger类,即可直接进行调用和日志处理,非常方便实用。 #安装logoru模块 pip3installloguru #引入和调用logoru fromloguruimportlogger logger.debug('Thisisdebuginformation') logger.info('Thisisinfoinformation') logger....[>>…]
FastAPI中的depends中的类变量导致跨请求会话传递数据的问题
使用FastAPI搭建了一个python服务端项目里,在route的请求处理方法中使用depends来判断用户的登录状态。遇到了depends中的类变量导致跨请求会话传递数据的问题。 依赖项是FastAPI提供的简单易用、功能强大的依赖注入系统。可以让开发人员轻松地把组件集成至FastAPI。依赖注入非常适合共享业务逻辑、共享数据库连接、实现安全、验证、角色权限等场景,这些场景能复用相同的代码逻辑,而使用依赖注入,将代码重复最小化。依赖项可以是一个函数,也可以是一个类,官方的...[>>…]
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...[>>…]