Вопрос проверяет умение работать с большими структурами данных в веб-приложениях.
Загрузите словарь при старте приложения (например, в startup событии FastAPI) и сохраните в памяти как глобальную переменную или в объекте приложения. Для доступа создайте endpoint, который будет искать значение по ключу. Можно использовать кэширование для ускорения.
from fastapi import FastAPI
app = FastAPI()
big_dict = {}
@app.on_event("startup")
async def load_data():
global big_dict
big_dict = load_huge_dict_from_file() # Ваша функция загрузки
@app.get("/lookup/{key}")
async def lookup(key: str):
return {"value": big_dict.get(key)}Кэширование (например, functools.lru_cache):
@lru_cache(maxsize=1000)
def cached_lookup(key):
return big_dict.get(key)Распределённое хранение (Redis) если данных слишком много:
async def lookup(key: str):
value = await redis.get(key)
if not value:
value = big_dict.get(key)
await redis.set(key, value)
return valueКогда использовать:
В памяти: когда данные помещаются в RAM
Redis: при очень больших объёмах данных
Кэширование: для часто запрашиваемых ключей