import datetime import fastapi import pydantic from app.storage.mongo import locks from app.utils import time 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(locks.Lock(name=body.name, locked_until=time.now() + datetime.timedelta(seconds=body.ttl))) except Exception as e: print(e) raise fastapi.HTTPException(409)