fastapi
文章平均质量分 55
Chise1
python和go的web开发
展开
-
fast-tmp入门
fast-tmp是一个基于fastapi和tortoise的后台管理平台。类似于django-admin原创 2023-02-16 17:19:16 · 718 阅读 · 1 评论 -
docker-compose部署fastapi+nginx+mysql
整个部署逻辑和django的部署比较相似,不过还是有一些不同的地方。首先,使用的python镜像不是官方的,而是fastapi作者准备的一个镜像,这个镜像可以自动读取服务器的cpu数量确认启动的workers数,这个镜像仅适合但服务器的docker部署,不适合k8s使用。原创 2022-12-16 14:22:37 · 717 阅读 · 0 评论 -
opentelemetry+jaeger python版本跨服务调用示例
opentelemetry python版本跨服务调用原创 2022-03-14 18:30:37 · 5608 阅读 · 0 评论 -
fastapi项目部署与golang性能粗略对比(娱乐模式)
目录概述配置poetry完成Dockerfile文件完成docker-compose文件启动项目概述fastapi部署主要依赖于gunicorn以及自动化的弹性扩容。依赖fastapi作者编写的镜像文档。整体思路如下:完成poetry环境搭建完成Dockerfile文件完成docker-compose(也可以不使用docker-compose)启动docker-compose配置poetrypoetry是一款python包管理工具,类似于pipenv或者venv。具体的使用教程请参考百原创 2021-08-10 10:20:52 · 3312 阅读 · 4 评论 -
fastapi+tortoise单元测试
文章目录概述示例基础测试类测试代码编写conftest.py修改tortoise-orm代码里面的bug执行测试获取代码覆盖率概述之前写过一次单元测试的文章,这次主要是完成一部分新的更简洁明了的测试。整个测试现在非常方便示例基础测试类首先我们要有一个基础的测试类,例如:import randomfrom fast_tmp.models import Userfrom httpx import AsyncClient, Responsefrom tortoise.contrib.test原创 2021-05-07 17:30:44 · 686 阅读 · 0 评论 -
sqlalchemy ^1.4异步操作指南
目录概述基本的操作方式查询基本查询级联查询预加载字表联合查询查询函数func概述本文章主要用于sqlalalchemy 2.0系列操作数据库风格的数据库操作指南。本文主要分为两类,查询,删除,杂项(主要为删除等等)另:本文主要为orm的操作方式,core的操作方式可以参考。基本的操作方式基本操作方式如下(这只是其中一种操作方式,):from sqlalchemy.orm import sessionmakerfrom sqlalchemy.ext.asyncio import AsyncSe原创 2021-02-17 11:43:00 · 6175 阅读 · 17 评论 -
fastapi+tortoise-orm测试
概述fastapi+tortoise的测试比较奇葩,tortoise-orm的测试需要传递event_loop,fastapi的异步测试不能直接访问,就算使用httpx的异步功能也不行(因为不会主动调用startup和shutdown)。解决方案:tortsoie-orm的测试解决方案是通过传递event_loop的方式,自己主动激活数据库(当然顺便创建测试数据库等一系列功能),但是没都要通过event_loop.run_until_complete执行实在是有点难看。我的解决方案:自己初始化数原创 2021-01-21 13:57:50 · 1704 阅读 · 1 评论 -
tortoise-orm的一些坑
概述本文主要记录使用tortoise-orm遇到的一些坑tortoise-orm的官网上面有很多的实例,但是使用的时候还是会遇到一些问题。pydantic_model_creator 字段不全问题如果使用pydantic_model_creator创建model,会遇到字段显示不完全,外键和多对多全部都没有。解决方案:在调用该方法之前需要先进行激活model,大致方法如下:stAPI(debug=settings.DEBUG) # 这一步不会真的访问数据库 Tortoise.init原创 2021-01-02 11:46:48 · 4769 阅读 · 1 评论 -
fastapi序列化器
概述fastapi的的序列化相关的只是比较杂乱,而且不像drf,有一个集中的序列化器管理函数get_serializer_class,fastapi没有基于类的view,自然序列化器也比较散乱。输入和输出的序列化fastapi的序列化器主要是通过pydantic的BaseModel创建而来。还有一些其他地方可以创建对应的序列化器(比如tortoise-orm的pydantic_model_creator和pydantic_queryset_creator),再加上一些其他的可以管理输入输出参数的控制变原创 2020-12-04 23:57:15 · 2398 阅读 · 0 评论 -
fastapi--捕捉422报错并进行本地化处理
文章目录概述解决方案ExceptionHTTPExceptionRequestValidationError解决方案概述fastapi如果pydantic对输入数据验证出现不符合的情况,默认情况下会以422的格式返回。但是说实话这个格式实在是太丑。最主要的原因是很可能不符合大家前后端交互的错误类型。当然返回内容不是中文也很重要。(这种事交给前端的话前端大概会打死我)解决方案在初始化app的时候,可以增加自定义的报错。目前fastapi很贴心的支持三种报错捕捉和替换默认处理。Exceptio原创 2020-12-03 00:10:04 · 11057 阅读 · 1 评论 -
python动态生成pydantic的basemodel类
文章目录概述基于exec基于组装概述动态生成pydantic的basemodel类有两种方式,第一种就是我们比较熟悉的使用exec直接把字符串转变为代码,通过拼接相关字符串实现动态生成;第二种是根据pydantic提供的类来自行组装basemodel类,这种比较常见(我个人认为第一种好像更简单粗暴一点)。基于exec示例:x="""class BM(BaseModel): x:int"""from pydantic import BaseModelBM=exec(x,{“BaseModel原创 2020-08-12 10:56:23 · 7486 阅读 · 5 评论 -
fastapi-实战-综述
目录项目介绍准备阶段原始开发阶段项目准备阶段项目开发阶段上线运维测试阶段项目介绍本系列教程以一个实战项目,结合公司现阶段的技术架构,讲解一个fastapi项目在实际上是如何运行的。整个系列前半部是整个项目的开发介绍,后半部结合devops将整个项目如何进行运维和上线。项目主要内容:一个订单系统,分为分发和终端,分发主要是用来接单并发送给 各个终端,接单则承接订单完成项目。订单主要是抖音点赞和评论相关的引流。整体结构如下:本系列主讲终端部分(订单分发和完成)。主要功能:从分发平台接收订单将订原创 2020-07-26 08:15:04 · 3549 阅读 · 3 评论 -
fastapi-后台任务、定时任务与消息队列
文章目录概述后台任务消息队列与定时任务在fastapi中初始化rearq创建定时任务使用任务引入日志概述有时候我们不可避免的要创建一些异步任务,这些任务与主线程无关或比较耗时不必立即反馈结果或不需要反馈结果。后台任务后台任务为fastapi自带的一种独立于主线程的执行方式,后台任务与请求回调很相似(甚至我觉得就是一样的,请求回调的方式请参考官方文档)。示例:from fastapi import BackgroundTasks, FastAPIapp = FastAPI()def wri原创 2020-07-21 11:02:18 · 10700 阅读 · 13 评论 -
fastapi-编写单元测试
文章目录概述conftesttests创建数据测试接口概述fastapi+tortoise-orm的结构,单元测试这一块讲述的都比较不清晰,而且都只是直接丢代码,没有讲原因。实际上,tortoise-orm在执行的时候,只会被初始化一次,所以在单元测试之前,需要先进行一次初始化,创建一个测试数据库,然后在测试完毕之后删除其测试数据库。tortoise-orm官方的fastapi实例的测试在部分情况是无法运行的,会报错,特别是在引入一些例如ReArq这样的异步缓存包之后,执行就很容易报错了。这里我记原创 2020-07-01 09:42:26 · 2871 阅读 · 2 评论 -
fastapi-创建一个项目模板
项目模板源码:步骤如下:安装poetry包管理工具为什么用的是这个,我也不知道…pip3 install poetry创建项目执行poetry new 项目名创建项目文件夹执行poetry install安装虚拟环境执行poetry shell启动虚拟环境搜索虚拟环境的python位置:which python将pycharm的settings的python改为4里面python的地址修改pyproject.toml里面的相关信息完成之后项目结构大概如下:fastapiStud原创 2020-06-24 15:47:04 · 2652 阅读 · 0 评论 -
从零搭建一个python轮子的流程讲解
目录概述在github创建仓库编写项目编写测试模块使用readthedocs创建readthedocs页面在readthedocs显示注册到pypi增加徽标概述从零搭建一个python的轮子,并上传到github和pypi上,提供自动化测试、说明文档和相关的一些东西,方便大家使用。主要涉及到的内容:在github上创建仓库编写项目编写测试模块使用readthedocs注册到pypi获取一些重要的徽标在github创建仓库这块很简单,网上全是教程。略编写项目略编写测试模块测试原创 2020-06-04 09:46:34 · 1185 阅读 · 0 评论 -
fastapi之tortoise-orm
目录概述fastapi引入创建对应数据模型创建Model设置数据库字段field字段介绍自定义字段设置MetaModel模型方法查询Q对象查询字段过滤预取F表达式功能和聚合事务根据Model生成Schema概述fastapi是一个很优秀的框架,但是缺少一个合适的orm,官方代码里面使用的是sqlalchemy,异步也是使用的这个。但是我这边看到有tortoise-orm这个异步orm框架,不知道效率如何,这里先学习,之后做一个性能测试比较一下。整个框架非常接近django,如果我没写的地方,要么是和d原创 2020-05-21 14:59:05 · 17918 阅读 · 10 评论 -
python通过rsa分段加密
文章目录概述概述为了对接目标系统,登陆的时候使用的是rsa非对称加密,由于rsa一次最多只能加密128个字符(好像是这么多),所以这里需要考虑通过python实现rsa分段加密。import requestsimport loggingfrom Crypto.PublicKey import RSAfrom Crypto.Cipher import PKCS1_v1_5import ...原创 2020-05-05 21:54:22 · 926 阅读 · 0 评论 -
fastapi依赖与权限管理
文章目录概述依赖的高级用法权限架构示例结尾概述fastapi对权限的控制,目前来看有两种,一种是全局权限控制,通过中间件。另一种是通过依赖实现精准权限控制。个人感觉依赖控制权限有更好的使用环境。这里以权限控制为例。依赖的高级用法官方介绍的依赖的高级用法是通过类的__call__实现传递参数的高级用法,举个例子:class PermissionChecker: """ ...原创 2020-04-17 11:42:35 · 8231 阅读 · 1 评论 -
fastapi之根据model生成schema和router
概述fastapi没有对应的admin,所以在需要配置后端的时候,会比较麻烦,每个接口都需要自己手动写。但是很多时候我们可能需要一个比较标准的东西,比如…一个装饰器通过装饰器装饰model就可以自动注册路由,自动生成对应的标准方法,再根据更多的一些自定义配置,甚至不需要自己手动写schema,然后不需要自己单独写路由相关的东西。(相当于给sqlalchemy的model增加django的mo...原创 2020-04-01 19:58:18 · 3745 阅读 · 0 评论 -
fastapi变量名
一句话:千万不要在fastapi里面定义下划线为输入变量名,会被转化为横线-,导致错误。。。原创 2020-03-30 15:51:31 · 401 阅读 · 0 评论 -
fastapi项目生成环境搭建
fastapi项目生成环境搭建概述从github获取代码安装需要的环境docker概述整个环境搭建的思路我觉得是没问题的,只是还缺少一些东西。这是一个很糟糕的尝试过程,到最后还是因为其中一步有问题前功尽弃,最近没有时间再进行测试了,希望各位大佬看到之后能指点一二。从github获取代码先到想要放置代码的文件夹pip3 install cookiecuttercookiecutter ...原创 2020-03-29 17:48:48 · 3899 阅读 · 1 评论 -
fastapi之token验证
fastapi之token验证概述全局依赖概述官方文档里面提供了使用jwt的方式进行的验证比较复杂,这里提供了一种原理相同,但是方式更简单的验证方式,一般更常见于开放api接口的时候的验证使用全局依赖创建一个文件存放全局依赖:# depends.pyimport hashlibimport hmacfrom fastapi import HTTPException, Header...原创 2020-03-28 21:06:44 · 7946 阅读 · 6 评论 -
fastapi与django异步的并发对比
概述据说fastapi是目前最快的异步框架,遂决定将其和django异步进行并发比较。先说结果:fastapi的异步可以使整体运行速度非常均衡,不会出现较大波动,但是django会出现大量的波动问题,部分访问速度很快,但是部分访问速度很慢,甚至超时。个人感觉是因为django的数据库访问是同步的,但是fastapi我是用的异步数据库访问。(django不支持异步数据库访问)在长时间并发情况...原创 2020-03-14 11:59:21 · 8685 阅读 · 11 评论 -
输入与输出验证--fastapi教程系列
概述本文主要讲解如何使用mypy(typing)和pydantic标注类,实现输入和输出参数序列化(用drf的话叫序列化)。主要功能就是验证输入参数和输出参数并转换为标准格式以BaseModel实例为例,实际上数据在basemodel和body等参数使用规则是一致的。数据类型数据类型的核心就在于,一切都基于类,而我们要做的就是把输入输出的数据用类标注出来。基础数据类型基础类型主要是分...原创 2020-03-13 19:28:55 · 1876 阅读 · 0 评论