StarletteΒΆ

The simplest example for Starlette, which demonstrates the work of this library.

from random import randint

from redis.asyncio import Redis
from starlette.applications import Starlette
from starlette.requests import Request
from starlette.responses import JSONResponse
from starlette.routing import Route

from redsession import ServerSessionMiddleware
from redsession.backend import RedisBackend

redis = Redis(host="192.168.1.3", protocol=3)


async def get_session(request: Request):
    return JSONResponse({"session": request.session})


async def set_session(request: Request):
    request.session.update({"id": 1})
    return JSONResponse({"session": request.session})


async def update_session(request: Request):
    request.session.clear()
    request.session.update({"user_id": randint(-100, 100)})
    return JSONResponse({"session": request.session})


async def delete_session(request: Request):
    request.session.clear()
    return JSONResponse({"session": request.session})


app = Starlette(
    routes=[
        Route("/get_session", get_session, methods=["GET"]),
        Route("/set_session", set_session, methods=["POST"]),
        Route("/update_session", update_session, methods=["PUT"]),
        Route("/delete_session", delete_session, methods=["DELETE"]),
    ]
)

app.add_middleware(
    ServerSessionMiddleware, backend=RedisBackend(redis), secret_key="secret"
)