跳转到主要内容

为您的FastAPI应用程序使用更少的线程。

项目描述

fastapi-dependency

Latest Commit
Package version

当您使用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 (6.5 kB 查看哈希值)

上传时间

构建分布

fastapi_dependency-0.1.0-py3-none-any.whl (4.3 kB 查看哈希值)

上传时间 Python 3

由以下组织支持