为您的FastAPI应用程序使用更少的线程。
项目描述
fastapi-dependency
当您使用FastAPI时,您可能会倾向于创建 同步 (def
) 依赖项,但实际上您并不执行线程阻塞操作。问题是FastAPI总是会在一个线程池中运行您的 同步 依赖项,这是不必要的。
该包的目标是明确您是否想在线程池中运行依赖项。
安装
该包可在 PyPI 上获得
pip install fastapi-dependency
用法
该包非常小巧,仅包含简单的函数
依赖关系
签名:
Depends(dependency: Callable[..., Any] | None = None, *, use_cache: bool = True, use_thread_pool: bool | None = None)
此函数是 fastapi.Depends
的直接替代品,并具有相同的签名。唯一的区别是它有一个额外的参数: use_thread_pool
。
如果您想在线程池中运行依赖项,可以将 use_thread_pool
设置为 True
。
from fastapi import FastAPI
from fastapi_dependency import Depends
app = FastAPI()
def dependency():
return "Hello World!"
@app.get("/")
def index(message: str = Depends(dependency, use_thread_pool=True)):
return {"message": message}
如果您在 同步 依赖项上未设置 use_thread_pool
,它将引发一个 RuntimeError
。
ThreadDepends
签名:
ThreadDepends(dependency: Callable[..., Any] | None = None, *, use_cache: bool = True)
此函数是 fastapi.Depends
的直接替换,具有相同的签名。唯一的区别是它总是在线程池中运行依赖项。
from fastapi import FastAPI
from fastapi_dependency import ThreadDepends
app = FastAPI()
def dependency():
return "Hello World!"
@app.get("/")
def index(message: str = ThreadDepends(dependency)):
return {"message": message}
ThreadlessDepends
签名:
ThreadlessDepends(dependency: Callable[..., Any] | None = None, *, use_cache: bool = True)
此函数是 fastapi.Depends
的直接替换,具有相同的签名。唯一的区别是它永远不会在线程池中运行依赖项。
from fastapi import FastAPI
from fastapi_dependency import ThreadlessDepends
app = FastAPI()
def dependency():
return "Hello World!"
@app.get("/")
def index(message: str = ThreadlessDepends(dependency)):
return {"message": message}
安全性
与 fastapi.Security
类似的函数有
安全性
ThreadSecurity
ThreadlessSecurity
许可
本项目采用 MIT 许可协议。
项目详情
fastapi_dependency-0.1.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 97e001f9dd12e8c64939dd237689e7b32da36faf9fef400147e3462e33ec8cff |
|
MD5 | 43fadc8f32d9d391f0fe7aa2b1e24a5b |
|
BLAKE2b-256 | 1539f1109599a8acab58622734a51762446c84a42a96831bcccc8d63b94e6e8f |
fastapi_dependency-0.1.0-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a954f4f57b2b222591c66f6ee894f583fd898e8d370630daf0647b8c88635b67 |
|
MD5 | 731cd39e658a988ceb272f156cea1392 |
|
BLAKE2b-256 | a6c9634a1a662db56880a9dc7d69b4e24fe1137653e449aaf49de2a02e8d8850 |