Запланированные фоновые обновления базы данных с использованием SQLAlchemy и Pyramid - PullRequest
0 голосов
/ 11 декабря 2018

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

  1. База данных SQLite сначала инициализируется и создается из сценария: initializedb.py путем чтения ряда текстовых файлов и добавления правильной информации в виде строк в таблице.в базу данных
  2. Затем запускается приложение Pyramid, доступ к которому осуществляется через localhost:6543
  3. Затем пользователь может получить доступ к списку, прочитанному из базы данных SQLite, с использованием шаблона Jinja2

Мое приложение будет работать постоянно 24/7, так что пользователь может получить доступ к этому списку в любое время.Поскольку текстовые файлы, из которых я инициализирую базу данных, постоянно обновляются, я хочу иметь возможность обновлять базу данных также каждый день.Мой главный вопрос таков:

Как бы я автоматически обновлял базу данных ежедневно, используя SQLAlchemy и Pyramid?

Следует ли периодически обновлять код для обновления базы данных на скрипте, выполняемом отдельно от приложения, или в самом коде Pyramid, например в views.py?

1 Ответ

0 голосов
/ 05 февраля 2019

Используйте cron для планирования регулярных задач

Просто используйте cron .Запускайте код инициализации один раз в день, чтобы воссоздать базу данных.

Если вам нужно быть более изощренным, вы можете использовать сельдерей для более сложных вещей.Но я думаю, что cron было бы лучшим местом для начала.

Если вы сделаете базу данных первичной?

Вы должны попытаться иметь только одну копию ваших данных.Похоже, у вас есть текстовые файлы, и вы «импортируете» их в базу данных.Но, похоже, ваши текстовые файлы регулярно обновляются каким-то другим процессом.

Альтернативный подход - сделать базу данных канонической версией данных.Вы можете создать административный интерфейс в вашем приложении для обновления базы данных.

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

Это можно сделать с помощью сценария командной строки.Просто добавьте такую ​​вещь к вашему setup.py

entry_points = """\
  [paste.app_factory]
  main = myapp:main
  [console_scripts]
  some_script = myapp.scripts.script:main
  another_script = myapp.any_module:some_function
  """
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...