我正在将 FastAPI 与 Pydantic 结合使用。
我的问题 - 我需要使用 Pydantic 引发 ValueError
from fastapi import FastAPI
from pydantic import BaseModel, validator
from fastapi import Depends, HTTPException
app = FastAPI()
class RankInput(BaseModel):
rank: int
@validator('rank')
def check_if_value_in_range(cls, v):
"""
check if input rank is within range
"""
if not 0 < v < 1000001:
raise ValueError("Rank Value Must be within range (0,1000000)")
#raise HTTPException(status_code=400, detail="Rank Value Error") - this works But I am looking for a solution using ValueError
return v
def …Run Code Online (Sandbox Code Playgroud) 我正在寻找将 uvicorn.run() 与 FastAPI 应用程序一起使用但没有 uvicorn.run() 阻塞线程的可能性。我已经尝试使用进程、子进程和线程,但没有任何效果。我的问题是我想从另一个进程启动服务器,该进程在启动服务器后应该继续执行其他任务。另外,我在从另一个进程关闭服务器时遇到了问题。
有没有人知道如何使用 uvicorn.run() 非阻塞以及如何从另一个进程中阻止它?
问候 LeukoClassic
是否可以按表中的字符选择最短和最长的字符串?
我有一CITY列类型VARCHAR(20),我想按长度的字母顺序选择最短和最长的城市名称。
我喜欢这个
SELECT CITY,LENGTH(CITY) FROM STATION WHERE LENGTH(CITY) IN ( SELECT MAX(LENGTH(CITY)) FROM STATION UNION SELECT MIN(LENGTH(CITY)) FROM STATION ) ORDER BY CITY ASC;
按字母顺序排列时,让城市名称列为 ABC、DEF、PQRS 和 WXY,长度分别为 3、3、4 和 3。命名最长的城市显然是 PQRS,但也有最短的选项-命名城市;我必须选择 ABC,因为它按字母顺序排在第一位。
我的查询最终以长度为 3 的所有三个 CITY 结束。
ABC 3 DEF 3 PQRS 4 WXY 3
SELECT 的结果必须是
ABC 3 PQRS 4
我对使用 Pydantic 还很陌生。
我现在面临的问题是,当值超出范围时,下面的模型不会引发预期异常。
例如,如果将 -1 传递到此模型中,理想情况下它应该引发 HTTPException。但什么也没发生
我不确定我可能哪里出错了。
任何建议都会很棒。
class GetInput:
"""
for the fields endpoint
"""
def __init__(self,
rank: Optional[int] = None,
interval: Optional[int] = None):
self.rank = rank
self.interval = interval
@validator('rank')
def check_if_rank_in_range(cls, v):
"""
check if input rank is within range
"""
if not 0 < v < 1000001:
raise HTTPException(
status_code=400, detail="Rank Value Must be within range (0,1000000)")
return v
@validator('interval')
def check_if_interval_in_range(cls, v):
"""
check if input rank is within range
"""
if …Run Code Online (Sandbox Code Playgroud) 我的路线:
@router.get('/check/{value}', status_code=200)
def ranks_check(value: BasicInput = Depends()):
"""
Test endpoint
"""
return value
Run Code Online (Sandbox Code Playgroud)
我的型号:
class BasicInput:
"""
Get Confidence to score Input class
"""
value: int
@validator('value')
def check_if_value_in_range(cls, v):
if not 0 < v < 1000001:
raise ValueError('Value Exceeded Limit')
Run Code Online (Sandbox Code Playgroud)
我需要做什么:
我需要验证输入并在出现 ValueError 时引发 HTTP 400。
我知道我可以使用 Pydantic 的类型完成整数验证,并在路由函数本身中Field进行运行。check_if_value_in_range我正在寻找使用该模型的解决方案。
我准备将 pytorch 模块转换为 ScriptModule,然后在 c++ 中加载它?但是我被这个错误阻止了This attribute exists on the Python module, but we failed to convert Python type: 'Vocab' to a TorchScript type,这Vocab是我定义的一个 python 对象。演示代码在这里:
import torch
class Vocab(object):
def __init__(self, name):
self.name = name
def show(self):
print("dict:" + self.name)
class Model(torch.nn.Module):
def __init__(self, ):
super(Model, self).__init__()
self.layers = torch.nn.Linear(2, 3)
self.encoder = 4
self.vocab = Vocab("vocab")
def forward(self, x):
name = self.vocab.name
print("forward show encoder:" + str(self.encoder))
print("vocab:" + name)
enc_hidden = []
step …Run Code Online (Sandbox Code Playgroud) python ×5
fastapi ×4
pydantic ×3
python-3.x ×3
jit ×1
mysql ×1
pytorch ×1
sql ×1
torchscript ×1
uvicorn ×1