2014-06-17 3 views
0

우리는 현재 django 및 django-omnibus (websockets)로 응용 프로그램을 개발 중입니다. 웹 서버를 통해 연결된 모든 클라이언트에게 서버 (django)의 업데이트를 정기적으로 보내야합니다.Django : websocket을 통해 정기적으로 업데이트를 보내십시오.

문제는 우리가 작업을 수행하는 데 cron이나 뭔가를 사용할 수 없다는 것입니다. manage.py 명령을 작성했지만 일부 제한 사항을 통해 옴니버스가 python manage.py updateclients로 시작 프로그램을 실행하면 websocket으로 메시지를 보낼 수 없습니다.

나는 장고가 이런 종류의 물건을 위해 설계된 것이 아니라 실행중인 장고 인스턴스 자체 내에서 업데이트를 보내는 방법이 있는지 알고있다.

도움 주셔서 감사합니다.

+0

확인 셀러리 :

당신은 아마 중이 같은 웹 서버 또는 무언가를 통해이 URL에 대한 몇 가지 액세스 제어를 원하는 http://www.celeryproject.org/ – petkostas

답변

2

귀하의 호스팅 환경에 cron이 없기 때문에 cron을 사용할 수없는 이유는 무엇입니까? ... 또는 "옴니버스가 python manage.py로 시작 프로그램을 사용하면 websocket에 메시지를 보낼 수 없기 때문에"?

cron이 없다면 https://apscheduler.readthedocs.org/en/latest/과 같은 대안을 찾아야하거나 Celery도 예약 된 작업을 제공해야합니다.

문제가 다른면 : "실행중인 django 인스턴스 내에서 업데이트를 보내는 방법"이라면 간단한 옵션은 장고 앱에 HTTP API를 추가하는 것입니다. 예를 들어

:

# views.py 
from django.core.management import call_command 

def update_clients(request): 
    call_command('updateclients') 
    return HttpResponse(status=204) 

그런 다음의 crontab에 당신과 같이 할 수 있습니다 :

curl 127.0.0.1/internalapi/update_clients 

을 ... 당신의 updateclients 코드가 활성이있는 장고 인스턴스 내에서 실행할 수있는이 방법 옴니버스 토네이도 서버에 연결.
https://djangosnippets.org/snippets/2095/

+0

감사합니다 많이! :) – MAGYS

관련 문제