feat: make request and response optional

This commit is contained in:
long2ice
2022-09-10 20:06:37 +08:00
parent a4b3386bf0
commit cb9259807e
8 changed files with 288 additions and 422 deletions

View File

@@ -1,5 +1,4 @@
from datetime import date, datetime
import pendulum
import uvicorn
from fastapi import FastAPI
from starlette.requests import Request
@@ -22,8 +21,8 @@ async def get_ret():
@app.get("/")
@cache(namespace="test", expire=20)
async def index(request: Request, response: Response):
@cache(namespace="test", expire=10)
async def index():
return dict(ret=await get_ret())
@@ -33,15 +32,15 @@ async def clear():
@app.get("/date")
@cache(namespace="test", expire=20)
async def get_data(request: Request, response: Response):
return date.today()
@cache(namespace="test", expire=10)
async def get_data():
return pendulum.today()
@app.get("/datetime")
@cache(namespace="test", expire=20)
@cache(namespace="test", expire=2)
async def get_datetime(request: Request, response: Response):
return datetime.now()
return {"now": pendulum.now()}
@app.on_event("startup")

View File

@@ -1,6 +1,6 @@
from datetime import date, datetime
import time
import pendulum
import redis.asyncio as redis
import uvicorn
from fastapi import FastAPI
@@ -25,8 +25,8 @@ async def get_ret():
@app.get("/")
@cache(namespace="test", expire=20)
async def index(request: Request, response: Response):
@cache(namespace="test", expire=10)
async def index():
return dict(ret=await get_ret())
@@ -36,27 +36,28 @@ async def clear():
@app.get("/date")
@cache(namespace="test", expire=20)
@cache(namespace="test", expire=10)
async def get_data(request: Request, response: Response):
return date.today()
return pendulum.today()
@app.get("/blocking")
@cache(namespace="test", expire=20)
def blocking(request: Request, response: Response):
@cache(namespace="test", expire=10)
def blocking():
time.sleep(5)
return dict(ret=get_ret())
@app.get("/datetime")
@cache(namespace="test", expire=20)
@cache(namespace="test", expire=2)
async def get_datetime(request: Request, response: Response):
return datetime.now()
print(request, response)
return pendulum.now()
@app.on_event("startup")
async def startup():
pool = ConnectionPool.from_url(url="redis://localhost")
pool = ConnectionPool.from_url(url="redis://redis")
r = redis.Redis(connection_pool=pool)
FastAPICache.init(RedisBackend(r), prefix="fastapi-cache")