add cache to /api/v1/tariffs and i/o-bound operations (sync read from file) which locked async event loop has moved to asyncio thread

This commit is contained in:
austnv
2026-06-14 23:04:11 +03:00
parent db3bd9eabd
commit 5d221415cc
+11 -5
View File
@@ -1,9 +1,15 @@
from fastapi import APIRouter, Request from fastapi import APIRouter
import aiofiles from functools import lru_cache
import json
import asyncio
router = APIRouter(prefix='/api/v1', tags=['tariffs']) router = APIRouter(prefix='/api/v1', tags=['tariffs'])
@lru_cache(maxsize=1)
def get_tariffs_sync():
with open('data/tariffs.json', 'r', encoding='utf-8') as f:
return json.load(f)
@router.get('/tariffs') @router.get('/tariffs')
async def get_tariffs(request: Request): async def get_tariffs():
async with aiofiles.open('data/tariffs.json', 'r', encoding='utf-8') as file: return await asyncio.to_thread(get_tariffs_sync)
return await file.read()