Джанго - Система уведомлений в реальном времени

Я новичок в Django и создаю свое собственное приложение. Я хочу интегрировать систему уведомлений (персональную, групповую и широковещательную) от сервера к конечному пользователю. всякий раз, когда он входит в свою учетную запись, панель уведомлений отображается как в Facebook.

В настоящее время используется: Django 1.8 и Python 2.7

Я прошел через номер ссылки или блогов, чтобы узнать. Я пришел через несколько вариантов следующим образом:

  1. Django Gevent Socketio: Не поддерживается для Django 1.8 Я все делал в Django 1.8 до сих пор. Пожалуйста, дайте мне знать, с какими проблемами я могу столкнуться при переходе на Django 1.6 с точки зрения поддержки и функциональности.

  2. Пушер: Я не очень осведомлен о. насколько это возможно и полезно использовать Pusher в текущем существующем приложении. Есть ли проблемы с совместимостью?

  3. Swampdragon: похоже на некоторые проблемы совместимости с Django 1.8

  4. Джанго-Торнадо, Центрифуга: Я немного боюсь изменить весь код. Кроме того, не зная о будущих проблемах, я мог бы столкнуться.

Мои вопросы:

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

  2. Также лучше перейти на Django 1.6 для поддержки Swampdragon и Django Socketio.

Пожалуйста, предоставьте ссылки, которые могут помочь.

Если я не прав, пожалуйста, исправьте. Мне нужны ваши ценные предложения.

2 ответа

Я исследую то же самое. Есть несколько открытых, но настраиваемых решений, таких как,

Из них я думаю о том, чтобы вырвать django-websocket-redis как я использую настройки сервера nginx+uwsgi, а также выглядит многообещающе. Кстати, было бы полезно для всех, если вы поделитесь тем, что вы нашли.

И на ваши вопросы,

1) Swampdragon + Pusher - это неплохая комбинация, так как она уменьшает множество основных вещей, которые необходимо реализовать.

2) Backporting не всегда хорошая практика. Никогда не делайте этого, если это не блокирует разработку вашего приложения.

ОБНОВЛЕНИЕ: Теперь у нас есть каналы Django(официально признанные). Я использую его для одного из моих живых проектов, и пока он хорошо работает для обновлений в реальном времени с несколькими тоннами пользователей.

Вы можете перестать думать о монолитных системах и перейти к шаблону микросервисов, вы должны начать по крайней мере со следующих сервисов:

  1. Пользовательский интерфейс и основное приложение

    Этот сервис - ваше существующее приложение django 1.8, ничего нового. Используйте это для вашего интерфейса.

  2. Сервис веб-сокетов

    Создайте новый сервис для вашего веб-сокета с любым фреймворком, который вы предпочитаете, например, tornado + django или любой другой фреймворк / платформа

Таким образом, ваше основное приложение не имеет никаких "добавок", и вы можете чувствовать себя комфортно, разрабатывая его только с помощью django. Затем к другому сервису вы можете добавить любую другую зависимость, не перегружая всю систему этим огромным списком зависимостей.

Взгляните на следующую ссылку: http://microservices.io/patterns/microservices.html

Другие вопросы по тегам