Python

FastAPI中的部分更新

我想在支持部分更新的FastAPI中实现PUT或补丁请求。The official documentation确实令人困惑,我不知道如何处理该请求。(我不知道items在文档中,因为我的数据将与请求的正文一起传递,而不是硬编码的字典)。 class QuestionSchema(BaseModel): title: str = Field(..., min_length=3, max ..
发布时间:2022-08-18 22:17:43 Python

如何触发FastAPI/Uvicorn的干净关闭

我正在使用uvicorn和python子进程.POpen运行许多FastAPI实例。我有一个用PySimpleGUI制作的小图形用户界面,我想用它来随意关闭和重新启动服务器。 我遇到的第一个问题是,至少在Windows中,启动uvicorn服务器似乎创建的不是一个而是两个新进程,而调用Popen.terminate()仅关闭其中一个进程,这不会释放与服务器关联的端口。我使用psutil包修复了这 ..
发布时间:2022-08-18 21:59:00 Python

PYDANIC模型在FastAPI中的良好实践

我正在使用FastAPI构建一个REST API,我真的很喜欢这个工具,特别是它与Pydatics和OpenAPI的集成。 例如,我可以将端点采用的模型编写为 class Model(BaseModel): field1: str = Field(default=...) field2: int = Field(default=...) field3: List ..
发布时间:2022-08-18 21:49:21 Python

与只调用依赖函数/类相比,在FastAPI中使用依赖有什么优势?

FastAPI提供way通过其自身的依赖项解析机制管理依赖项,如数据库连接。 它类似于pytest夹具系统。 简而言之,您在函数签名中声明了所需的内容,FastAPI将调用您提到的函数(或类),并在调用处理程序时注入正确的结果。 是的,它确实进行缓存(在单个处理程序运行期间),但我们不能只使用@lru_cache修饰器并在每次运行时简单地调用这些依赖项来实现相同的功能吗? 我错过了什么吗? ..
发布时间:2022-08-18 20:57:05 Python

PYDANIC枚举字段不会转换为字符串

我正在尝试将类中的一个字段限制为枚举。然而,当我尝试从类中获取词典时,它不会被转换为字符串。相反,它保留枚举。我检查了pydantic documentation,但找不到与我的问题相关的任何内容。 此代码代表我实际需要的内容。 from enum import Enum from pydantic import BaseModel class S(str, Enum): a ..
发布时间:2022-08-18 20:47:46 Python

在python-fast Api中间件中引发异常

我正在尝试在Fastapi中间件中验证令牌,但这似乎是不可能的。正如我所想的那样,中间件需要进行下一次调用,尽管这不是必需的。我找不到任何好的解决方案来在这个python-fast api后端一次性处理令牌。如有任何帮助,我们不胜感激。 @app.middleware("http") async def add_middleware_here(request: Request, call_n ..
发布时间:2022-08-18 20:23:00 Python

如何在类内使用FastAPI创建路由

所以我需要在类中有一些路由,但是路由方法需要有selfattr(以访问类的属性)。 但是,FastAPI随后假定self是它自己的必需参数,并将其作为查询参数放入 这是我得到的: app = FastAPI() class Foo: def __init__(y: int): self.x = y @app.get("/somewhere") ..
发布时间:2022-08-18 20:11:33 Python

构建FastAPI项目的最佳实践是什么?

我要解决的问题: 目录的好名称,以便它们的用途明确。 将所有项目文件(包括Viralenv)保存在一个位置,因此我 可以轻松地复制、移动、存档、删除整个项目或估算磁盘 空间使用率。 创建某些选定文件集的多个副本,例如整个 应用程序、存储库或虚拟环境,同时保留 我不想克隆的其他文件。 只需通过rsyncing将正确的文件集部署到服务器 选择了一个目录。 很好地处理了前端和后端。 ..
发布时间:2022-08-18 19:45:05 Python

如何避免在python API服务器中重复处理?

假设函数detect_primes的调用成本很高,我希望避免使用重复的参数重复调用它。我该怎么办? 使用缓存没有任何帮助,因为该函数可能会在不同的请求中被并发调用。当两个请求都看到缓存中没有值时,两个请求都将继续执行开销较大的函数。 def detect_primes(nums: List[int]) -> Dict[int, bool]: """ detect whether a ..
发布时间:2022-08-18 19:37:31 Python

根据字段的值使用不同的PUDING模型

我有两个简单的模型(var1和var2)。PostExample方法的输入可以接收第一个模型或第二个模型的数据。 使用Union有助于解决此问题,但在验证过程中,它会为第一个模型和第二个模型抛出错误。 如何使其在填写字段时出错的情况下,只为某个模型返回验证器错误,而不是同时为两个模型返回?(如果有帮助,则可以通过字段A的长度来区分模型) main.py @app.post("/Pos ..
发布时间:2022-08-18 19:29:27 Python

如何让Python FastAPI异步/等待功能正常工作?

如何正确使用FastAPI路由中的异步功能? 下面的代码片段需要10秒才能完成对我的/home路由的调用,而我预计只需要5秒。 from fastapi import FastAPI import time app = FastAPI() async def my_func_1(): """ my func 1 """ print('Func1 st ..
发布时间:2022-08-18 19:08:24 Python

使用PYDANIC使每个字段都是可选的

我正在使用FastAPI和Pydtic制作一个API。 我希望有一些补丁端点,其中一条记录的1个或N个字段可以一次编辑。此外,我希望客户端仅传递负载中的必需字段。 示例: class Item(BaseModel): name: str description: str price: float tax: float @app.post("/ite ..
发布时间:2022-08-18 18:50:22 Python