python的try yield finally + async是不是有点坑
Python中的tryfinally块是一个异常捕获的手段,同时Python中还有一个功能就是tryfinally块里的finally语句块总是会被执行的,并且会使用try语句块里的变量。如下示例代码及其运行结果: #示例1 deftest(): try: print("a") yield1 return2 finally: print("bbbb") return0 a=test() print(a) print("-"*30) print(next(a)) print(a) print("="*30) print(next(a)) #示例2 deftest2(): try: print("a") return2 finally: print("b") #return0 a=test2() print('-'*30) print(a) 执行结果如...[>>…]
Fastapi框架提取所有的route路由以做后台权限控制
在做项目的权限控制时,为了实现自动化扩展权限控制,我们习惯将控制器方法作为一个权限标识,然后根据帐户的权限中是否存在这么一项路由以作为其是否能管理这项操作。这是一个简单且易维护的功能实现方法,之前见过一套教学系统,可能功能也比较庞大,其在做权限的时候用的一套复杂的配置文件,非常烦人。 使用上面的方法的关键是要分离后台程序中的所有路由器方法,并过滤一些非权限项的路由,比如退出方法,然后添加进数据库表,再将角色和权限进行一对多联系起来...[>>…]
修改Fastapi框架Websocket官方示例实现多房间多人即时通迅
Fastapi框架Websocket官方示例:https://fastapi.tiangolo.com/advanced/websockets/中有一个示例实现多个用户进行即时沟通,但这个示例只能实现多个用户在一起沟通,而不能实现多个用户随便分组随便沟通,因此对这个示例进行了修改实现了多房间多用户的沟通场景。修改的部分以及修改后的代码如下: fromtypingimportList fromfastapiimportFastAPI,WebSocket,WebSocketDisconnect fromfastapi.responsesimportHTMLResponse app=FastAPI() html=""" <!DOCTYPEhtml> <html> <...[>>…]
Python的Fastapi框架使用Websocket时Unsupported upgrade request
Python的Fastapi框架中可以方便地使用Websocket,见官方文档:https://fastapi.tiangolo.com/advanced/websockets/但在使用websocket的时候碰到了报错,WARNING: Unsupportedupgraderequest.即当前的fastapi环境中并没有支持websocket的upgrade请求,客户端中的连接ws协议的js代码中也报错:handshake:Unexpectedresponsecode:400。 我的运行环境是uvicorn,是通过pipinstalluvicorn来安装,在之前开发API接口的时候一切正常,但在使用websockets时遇到了这个错误...[>>…]
python中的异常Exception捕获以及python2与python3的区别
Python开发的时候经常会碰到两类错误,语法错误SyntaxError:invalidsyntax和异常Exception。在语法没有问题的前提下在运行期检测到的错误被称为异常,大多数的异常都不会被程序处理,都以错误信息的形式展现出来,且异常以不同的类型出现,这些类型都作为信息的一部分打印出来,如可能报的除数为0的错误ZeroDivisionError;比如使用assert(断言)用于判断一个表达式当为false的时候会触发抛出一个AssertionError异常等等。 异常捕捉可以使用try/except语句,先执行t...[>>…]
python调试:使用装饰器来统计函数被调用次数及格式化dict
喜欢调试的时候显示数据并显示一些其它的信息,比如区分是哪次调用的调试信息,比如友好的显示dict等相对复杂的数据类型,所以这里涉及到两个方面。一是统计函数被调用次数;二是格式化展示dict数据。 在类中对一个函数的调用次数进行统计比较方便,直接定义一个类属性来计数即可,但对于一个普通函数这样的方法就不能实现了,于是我们可以通过装饰器来实现。 装饰器(Decorators)是Python的一个重要功能,它是一个可以修改其他函数的功能的函...[>>…]
git:LF will be replaced by CRLF和pytest: --cov NTERNALERROR PermissionError
1.gitwarning:LFwillbereplacedbyCRLFin***file 偶然gitadd在进行代码提交的时候碰到警告warning:LFwillbereplacedbyCRLFin***file,原因是编辑的代码内容中存在符号转义问题,windows中的换行符为CRLF,而在linux下的换行符为LF,所以在执行add.时,git发现改动文件中引入了LF会发出警告你哪些文件不是纯CRLF文件,但git不会自动修改工作区的文件,而是对暂存区进行修改。我们也可不做任何处理,它只是会提示,对代码提交无影响。 $gitadd. warning:LFwillbereplacedbyCRLFin***file Thefile...[>>…]