Use less threads for your FastAPI applications.
Project description
fastapi-dependency
When you use FastAPI, you might be tempted to create sync (def
) dependencies on which you actually don't perform thread blocking operations.
The thing is that FastAPI will always run your sync dependencies in a thread pool, which is not necessary.
The goal of this package is to make explicit if you want to run a dependency in a thread pool.
Installation
The package is available on PyPI:
pip install fastapi-dependency
Usage
This package is really small and contains simple functions:
Depends
Signature:
Depends(dependency: Callable[..., Any] | None = None, *, use_cache: bool = True, use_thread_pool: bool | None = None)
This function is a drop-in replacement for fastapi.Depends
and it has the same signature.
The only difference is that it has an extra parameter: use_thread_pool
.
If you want to run a dependency in a thread pool, you can set use_thread_pool
to 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}
If you don't set use_thread_pool
on sync dependencies, it will raise a RuntimeError
.
ThreadDepends
Signature:
ThreadDepends(dependency: Callable[..., Any] | None = None, *, use_cache: bool = True)
This function is a drop-in replacement for fastapi.Depends
and it has the same signature.
The only difference is that it will always run the dependency in a thread pool.
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
Signature:
ThreadlessDepends(dependency: Callable[..., Any] | None = None, *, use_cache: bool = True)
This function is a drop-in replacement for fastapi.Depends
and it has the same signature.
The only difference is that it will never run the dependency in a thread pool.
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}
Security
The analogous functions for fastapi.Security
are:
Security
ThreadSecurity
ThreadlessSecurity
License
This project is licensed under the terms of the MIT license.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for fastapi_dependency-0.1.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a954f4f57b2b222591c66f6ee894f583fd898e8d370630daf0647b8c88635b67 |
|
MD5 | 731cd39e658a988ceb272f156cea1392 |
|
BLAKE2b-256 | a6c9634a1a662db56880a9dc7d69b4e24fe1137653e449aaf49de2a02e8d8850 |