From 4e6add4608be3ba1e9ffff5359bc45302d4de3ae Mon Sep 17 00:00:00 2001 From: Gary Gale Date: Sat, 9 Nov 2024 23:27:03 +0000 Subject: [PATCH] docs fixes #394: Change deprecated startup event to lifespan (manual merge) --- README.md | 42 +++++++++++++++++++++++++++++++++++------- 1 file changed, 35 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 77f2f7e..ec201ab 100644 --- a/README.md +++ b/README.md @@ -50,13 +50,42 @@ or ### Quick Start -```python -from collections.abc import AsyncIterator -from contextlib import asynccontextmanager +Using in-memory backend: +```python +from contextlib import asynccontextmanager +from fastapi import FastAPI + +from fastapi_cache import FastAPICache +from fastapi_cache.backends.inmemory import InMemoryBackend +from fastapi_cache.decorator import cache + + +@asynccontextmanager +async def lifespan(app: FastAPI): + FastAPICache.init(InMemoryBackend(), prefix="fastapi-cache") + yield + + +app = FastAPI(lifespan=lifespan) + + +@cache() +async def get_cache(): + return 1 + + +@app.get("/") +@cache(expire=60) +async def index(): + return dict(hello="world") +``` + +or [Redis](https://redis.io) backend: + +```python +from contextlib import asynccontextmanager from fastapi import FastAPI -from starlette.requests import Request -from starlette.responses import Response from fastapi_cache import FastAPICache from fastapi_cache.backends.redis import RedisBackend @@ -66,7 +95,7 @@ from redis import asyncio as aioredis @asynccontextmanager -async def lifespan(_: FastAPI) -> AsyncIterator[None]: +async def lifespan(app: FastAPI): redis = aioredis.from_url("redis://localhost") FastAPICache.init(RedisBackend(redis), prefix="fastapi-cache") yield @@ -85,7 +114,6 @@ async def get_cache(): async def index(): return dict(hello="world") ``` - ### Initialization First you must call `FastAPICache.init` during startup FastAPI startup; this is where you set global configuration.