Как я могу постоянно кэшировать конфигурацию и связанные данные для извлечения при перезапуске службы?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как я могу постоянно кэшировать конфигурацию и связанные данные для извлечения при перезапуске службы?

Сообщение Anonymous »

Я работаю над распределенной библиотекой, в которой у меня есть динамически создаваемый класс Config, который инициализирует атрибуты на основе аргументов ключевого слова, как показано ниже:

Код: Выделить всё

from typing import TypeVar, Any

Serializable = TypeVar('Serializable', int, float, str, bool, list, set, dict)

def _init(self, **kwargs: dict[str, Serializable]) -> None:
for key, value in kwargs.items():
setattr(self, key, value)

def _repr(self) -> str:
return f'{self.__class__.__name__}({", ".join([f"{key}={value}" for key, value in vars(self).items()])})'

Config = type('Config',
(object,),
{'__init__': _init,
'__repr__': _repr,
'to_dict': lambda self: vars(self)})
У меня есть функция get_data, которая извлекает данные на основе параметров Config. Если данные недоступны, он запрашивает базу данных SQL:

Код: Выделить всё

def get_data(config: Config) -> Any:
data: Any = ...  # get data from config
if data is None:
# search SQL database using config parameters
...
return data
Проблема
Мне нужно кэшировать конфигурацию и соответствующие данные таким образом, чтобы данные можно было получить даже после перезапуска службы. Использование кэша в памяти, такого как lru_cache, не сохраняет данные при перезапуске, поэтому он не подходит для этого требования.
Требования:
  • Постоянное кэширование. Кэш должен сохранять данные на диске или в другом виде долговременного хранилища.
  • Эффективность извлечения. Кэш должен обеспечивать эффективное извлечение данных на основе параметров конфигурации. .
  • Поддержка сложных ключей. Механизм кэширования должен поддерживать сложные объекты в качестве ключей. например, пользователь может обеспечить извлечение нескольких элементов, но решение для кэширования должно кэшировать их по одному (если не существует лучшего решения), чтобы предотвратить множественный поиск, если один и тот же элемент запрашивается дважды в разных наборах элементов.< /li>
Вопросы:
  • Каковы рекомендуемые подходы или библиотеки для постоянного кэширования данных в Python, который подходит для этого варианта использования?
  • Как я могу сериализовать и хранить объекты Config и гарантировать, что их можно будет десериализовать для поиска в кеше после перезапуска службы?
  • Есть ли какие-либо конкретные соображения или подводные камни, о которых мне следует знать при реализации постоянного кэширования в распределенной системе?
PS: Я не ищу реализацию кода . Просто рекомендации по передовой практике/соображениям перед внедрением. Спасибо.

Подробнее здесь: https://stackoverflow.com/questions/791 ... across-ser
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Nginx: как постоянно кэшировать ответ?
    Anonymous » » в форуме Php
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • OpenTelemetry генерирует трассировки только при перезапуске службы
    Anonymous » » в форуме JAVA
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Почему при перезапуске потребительской службы появляется информация об исключении
    Anonymous » » в форуме JAVA
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Почему при перезапуске потребительской службы появляется информация об исключении
    Anonymous » » в форуме JAVA
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Сохраните введенные данные и попросите использовать их снова при перезапуске программы.
    Anonymous » » в форуме Python
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»