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

Как извещать Django об изменении БД сторонним приложением?

Суть вопроса даже немного шире.
В общих чертах: есть игровой сервер который работает как абсолютно отдельное приложение и трогать его нельзя, но все события на нем слушает "Listener" написанный на Python и сохраняет события, а точнее результаты игр в БД PostgreSQL, Django 3.0 работает как фронт энд, используется эту БД, точнее информацию из нее, но не влияет на таблицы связанные с игровым сервером. Пользователи которые заходят на сайт видят результаты игр и могут помогать своим "любимчикам" (отправляется запрос и данные через REST API на игровой сервер). Т.е. получается замкнутый круг - Игровой сервер, его слушает Listener, он воздействует на БД, Джанго получает информацию с БД и косвенно воздействует на игровой сервер.
Listener сохраняет в БД не с помощью моделей джанго, а на прямую. Конечно, что Django, что Listener используют одинаковые таблицы. Listener`a можно переделывать как хочешь, думал может как нибудь через Celery все это сделать. На Джанге используется Celery и Redis. Буду рад любому совету, а то голову уже сломал.
Listener удобен тем, что независимо какую информацию он "услышал" на игровом сервере, в БД меняет все в цикле и не думает о том, что это, какая таблица и т.п. (все через переменные).

Сам вопрос таков, как сообщать (оповещать) джанго, что бд изменилась сторонним приложением или возможно советы по изменению схемы (использование Celery или Redis может еще чего) в общем?
P.S. Оповещение Джанго мне нужно, чтоб через сокеты обновлять данные на странице, пользоваться сигналами джанго пользоваться).
  • Вопрос задан
  • 203 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега PostgreSQL
Седой и строгий
Если делать хорошо и правильно, то вместо Django использовать какой-нибудь асинхронный фреймворк, для распространения изменений брокер очередей, а базу использовать только как хранилище исторических данных.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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