2012-06-07 6 views
23

장고에 푸시 시스템을 구축해야하는데 기본적으로 서버에서 브라우저로 메시지를 푸시하는 기능이 있습니다.django에서 푸시 시스템을 만드는 방법은 무엇입니까?

nodejs를 사용할 수 없기 때문에 websocket 또는 orbited를 선호하지만이 두 가지를 장고에서 구현하는 방법을 모릅니다. pls 나를 위해 방법을 추천,이게 많이 도움이 될 것입니다.

답변

11

장고는 클라이언트에게 물건을 "밀어 넣기"에 좋지 않습니다. django가 유일한 옵션이라면 push를 모방하는 유일한 방법은 long-polling을 사용하는 것입니다. 그러나 이것은 효율적이지 않습니다. 대신 웹 소켓이 뜨겁습니다. 토네이도와 꼬인이 당신을 도울 수 있습니다. 귀하의 질문에 대한보다 완전한 대답 인 here도 있습니다.

+0

내 전체 사이트는 장고와 Nginx를 기반으로하므로 토네이도를 사용하는 것이 효율적인 방법이 아닌가? – Stan666

+0

왜 그렇게 효율적이지 않습니까? 그것은 당신의 하드웨어에 달려 있습니까?약간의 노력으로 일부 웹 소켓을 처리하는 병렬 토네이도 프로세스를 가질 수 있습니다. – hymloth

+0

미안하지만 토네이도에 익숙하지 않습니다. 토네이도 서버를 장고와 병렬로 사용 하시겠습니까? 내 첫번째 생각은 django 내부에서 이것을하는 것이었고, 너무 나쁜 django-websocket이 있기 때문이다. – Stan666

13

하나의 옵션은 REST/Push API가있는 Django 서버와 병렬로 실행되는 WebSocket 서버를 사용하고 WebSocket 서버에 간단히 HTTP/POST하여 장고를 푸시하는 것입니다. 연결된 모든 WebSocket 클라이언트.

그런 식으로 기존 Django 앱을 구조적/기술적으로 변경하지 않아도 확장 성이 뛰어난 최신 WebSocket 기반 푸시 기능을 사용할 수 있습니다.

위에서 제공하는 호스팅 서비스의 경우 http://pusher.com을 살펴 보겠습니다.

직접 실행하는 것이 좋으면 즉시 실행할 가상 어플라이언스 (VMware, VirtualBox, Amazon EC2)로 배포되는 http://autobahn.ws을 살펴보십시오. 여기 REST/API의 실제 사례를 찾을 수 있습니다 https://github.com/tavendo/AutobahnPushPython

면책 조항 : Autobahn Open-source의 저자이며 Autobahn.ws (Autobahn OSS를 기반으로 한 상용 제품)를 제공하는 Tavendo에서 근무하고 있습니다.

+0

AutobahnPushPython, thx에서 시도해 보겠습니다 :) – Stan666

6

메시지 큐로 레디 스를 이용하여 상자의 WebSocket을 지원하는 장고 모듈있다. 여기 좀보십시오 : https://github.com/jrief/django-websocket-redis

면책 조항 : 나는이 도서관의 저자입니다.

+0

최소한의 예를 추천 할 수 있습니까? –

+0

@RubberDuck ... 저장소 데모를 확인하십시오. 그것은 꽤 좋다. 설치를 확인할 수 있습니다. http://django-websocket-redis.readthedocs.org/en/latest/installation.html#check-your-installation 다음은 라이브 데모입니다. http://websocket.aws.awesto.com/chat/ – nicorellius

9

장고 WebSocket을의 또 다른 구현 : 문서에서 https://github.com/jonashagstedt/swampdragon

: SwampDragon이 Djangos 멋진 ORM (. 대체와 IE7에서 테스트) 토네이도 우수한 웹 소켓 지원, 레디 스 타오르는 속도를 사용합니다.

1

Django omnibus

내부적으로 토네이도를 사용하고 파이썬 3을 지원한다.

4

2016 년 현재 Django Channels이 있으므로 Django (1.8 이상)에 웹 소켓을 제공합니다.

또한 part of the official Django project입니다.

+0

Django + Channels + React에 대한 전체 자습서도 있습니다 : https://codyparker.com/django-channels-with-react/ – np8

관련 문제