Задать вопрос
DDD01
@DDD01

Мультиязычность на python как стоит оптимизировать?

У меня есть функция перевода сообщений и файлы с переводом

async def _(text, lang):
    file_path = os.path.join(os.path.dirname(__file__), f"{lang}.json")
    if not os.path.exists(file_path):
        return text
    
    async with aiofiles.open(file_path, mode='r') as file:
        lang_data = json.loads(await file.read())
    
    for key in text.split("."):
        lang_data = lang_data.get(key, None)
        if lang_data is None:
            return text
    return lang_data


Данные пользователя и какой именно у него язык храняться в базе данных, кэшировать это как-то не хочется, а писать в каждой функции обращение к базе с запросом какой язык у пользователя не уверен что правильно.

Подскажите какой есть способ чтоб не обращаться к базе в каждой функции или не имеет смысла и общаться каждый раз?
  • Вопрос задан
  • 50 просмотров
Подписаться 1 Простой 2 комментария
Решения вопроса 1
AshBlade
@AshBlade
Просто хочу быть счастливым
Либо кэшировать (что не особо трудно), либо храни это в сессии
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
Ну кэшировать результаты приведённого кода, пожалуй, стоит, всё же открывать-закрывать файл на каждый чих - не лучшая идея. functools.lru_cache в помощь.
Но вообще, если встаёт вопрос "оптимизировать или нет", то первое, что нужно сделать - понять, что именно стоит оптимизировать. Если у тебя заметная доля времени выполнения тратится на указанный код, то да, стоит.
Профилируй свой код (можно с помощью модулей profile/cProfile или стороннего профилировщика), и выясняй.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы