Какой лучший метод инициализации или хранения словаря поиска, который будет использоваться в представлениях django

Я возрождаю старое приложение django 1.2. большинство шагов уже сделано. В моем django приложении есть представления, которые будут ссылаться на простой словарь, состоящий всего из 1300 пар ключ-значение.

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

fwiw: django обслуживается gunicorn, db=postgres, apache в качестве прокси, на сервере еще нет redis

Я придумал здесь несколько вариантов:

  1. таблица в базе данных, которая будет запрашиваться и позволит кэшированию сделать свою работу (за счет нескольких сотен sql-запросов)

  2. Просто определить словарь в файле настроек (уродливо, и сколько раз он считывается? Каждый раз, когда вы делаете 'from django.conf import settings'? Именно так это было сделано в предшественнике этого приложения на django 1.2 много лет назад

    .
  3. читать файл с разделителями табуляции с помощью Pandas в настройках django и делать его доступным. Преимущество в том, что я могу делать некоторую магию pandas в представлении. (Насколько это эффективно, будет ли файл читаться много раз для разных пользователей или только один раз при запуске сервера?)

    .
  4. предварительное заполнение кэша redis из файла как часть процесса запуска (усложняет ситуацию на стороне сервера, а мы хотим, чтобы все было просто, но зато быстро.

  5. Перечисление элементов в файле с разделительной вкладкой и чтение его в представлении (мой наименее популярный вариант, так как он кажется довольно медленным)

Какие у вас мысли по этому поводу? Есть другие варианты?

Позвольте мне привести несколько - от простых до более сложных

  1. Хранить в памяти
  2. Основной плоский файл
  3. Sqlite файл
  4. Redis
  5. DB

Я бы не стал привлекать Redis для пар 1300 кВ, которые даже не так сильно мутируют

Я бы поместил файл рядом с кодом, который забирается в память при запуске, или сделал бы один sql-запрос и забрал бы всю информацию при запуске и сохранил бы ее в памяти, чтобы использовать во всем приложении

Вернуться на верх