fastapi 使用Redis作为session存储 demo
时间: 2023-11-12 11:05:21 浏览: 256
好的,我可以为您提供关于 fastapi 使用 Redis 作为 session 存储的 Demo。以下是一个基于 fastapi 和 aioredis 的示例代码:
```
from fastapi import FastAPI, Request, status
from fastapi.responses import JSONResponse
from fastapi_session import FastAPISessionMaker
import aioredis
app = FastAPI()
@app.on_event("startup")
async def startup_event():
redis = await aioredis.create_redis_pool("redis://localhost")
app.state.redis = redis
app.state.session = FastAPISessionMaker(secret_key="my-secret-key", redis_pool=redis)()
@app.on_event("shutdown")
async def shutdown_event():
app.state.session.close()
await app.state.redis.quit()
@app.get("/")
async def root(request: Request):
session = await app.state.session.get_session(request)
if session.new:
session["visits"] = 0
session["visits"] += 1
return {"visits": session["visits"]}
@app.exception_handler(Exception)
async def exception_handler(request: Request, exc: Exception):
return JSONResponse(
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
content={"message": "Internal Server Error"},
)
```
此时,您可以通过访问 http://localhost:8000/ 来测试这个 demo。它将使用 Redis 来存储会话信息,以便跟踪每个用户的访问次数。当用户访问网站时,如果是第一次访问,则设置“visits”值为0;否则,“visits”值加1。
阅读全文