Подтвердить что ты не робот

Как построить систему push в джанго?

Мне нужно создать систему push в django, в основном ее функция - пересылать сообщения с сервера на браузер.

Поскольку nodejs нельзя использовать, я предпочитаю websocket или orbited, но я не знаю, как реализовать любой из этих двух в django. PLS рекомендуют метод для меня, это поможет мне много, спасибо.

4b9b3361

Ответ 1

Django не умеет "подталкивать" вещи к клиенту. Если django - ваш единственный вариант, единственный способ имитировать нажатие - это длительный опрос. Но это неэффективно. Вместо этого веб-узлы горячие. Торнадо и скрученный могут помочь вам здесь. Существует также более полный ответ на ваш вопрос здесь.

Ответ 2

Один из вариантов заключается в использовании сервера WebSocket, работающего параллельно с вашим сервером Django, который имеет REST/Push API, а затем выполняет push из Django простым HTTP/POSTing на сервер WebSocket, который, в свою очередь, доставляет сообщения всем подключенных клиентов WebSocket.

Таким образом, вам не нужны какие-либо структурные/технические изменения для вашего существующего приложения Django, тем не менее, у вас есть масштабируемая, современная функция push на основе WebSocket.

Для предоставленного выше размещенного сервиса я бы посмотрел http://pusher.com.

Если вы предпочитаете использовать свой собственный, я бы посмотрел на http://autobahn.ws, который развертывается как готовое к запуску виртуальное устройство (VMware, VirtualBox, Amazon EC2). Здесь вы можете найти рабочие примеры REST/API https://github.com/tavendo/AutobahnPushPython

Отказ от ответственности: я являюсь автором Autobahn Open-source и работаю в Tavendo, который предлагает Autobahn.ws(коммерческое предложение на основе Autobahn OSS).

Ответ 3

Другая реализация websockets в Django: https://github.com/jonashagstedt/swampdragon

Из документов: SwampDragon использует замечательный ORM Djangos, превосходную поддержку веб-поддержки Tornados (с резервными ошибками, протестирован в IE7) и красную скорость Redis.

Ответ 4

Существует модуль Django, который поддерживает веб-узлы из коробки, используя Redis в качестве очереди сообщений. Посмотрите здесь: https://github.com/jrief/django-websocket-redis

Отказ от ответственности: я являюсь автором этой библиотеки.

Ответ 7

Django omnibus

Использует торнадо внутри и поддерживает python 3.