import fastapi import pydantic from app.storage.mongo import locks class RequestBody(pydantic.BaseModel): name: str ttl: int router = fastapi.APIRouter() @router.post('/api/v1/acquire', status_code=fastapi.status.HTTP_202_ACCEPTED, responses={'409': {'description': 'Conflict'}}) async def execute(body: RequestBody): try: await locks.acquire(body.name, ttl=body.ttl) except locks.ConflictException: raise fastapi.HTTPException(409)