2010-07-08 2 views
1

내 재사용 가능한 장고 앱에서 사용자 지정 명령을 받았는데 데몬 서비스를 시작한 다음 돌아와서 서비스를 계속 실행합니다.djangos manage.py custom 명령을 사용하여 대몬 서비스를 시작 하시겠습니까?

내 서비스를 시작 메소드가있는 간단한 클래스로 구현했습니다. start가 호출되면 영원한 루프에서 실행되고 10 초 동안 대기 한 다음 django orm을 사용하여 프로젝트 settings.py 파일에 구성된 데이터베이스를 검사하고 주어진 폴더의 항목을 확인합니다. 내 서비스 및 반환의 차기

./manage.py startservice 

:

나는에 수 있어야합니다. 다음 같은 쉘 :

./manage.py runserver 

5 초 내에 배경 처리에서 실행중인 서비스에 의해 픽업되어, 특정 데이터베이스 테이블에 엔트리를 추가하기 시작.

더 많은 메시지 대기열 기반 접근 방식으로 셀러리를 살펴 보았지만 너무 많은 다른 것들을 사용합니다. 모든 것이 장고의 재사용 가능한 앱 패턴을 따르는 것이 중요합니다.

힌트 또는 생각이 있으십니까?

+0

셀리는 RabbitMQ 대신 django ORM과 데이터베이스를 사용할 수 있습니다. 너무 많은 다른 것들에 의존한다는 것은 셀러리가 RabbitMQ 대신 사용할 수 있습니다. – asksol

답변

2

나는이 작업을 처리하기 위해 라이브러리 시작 부분에 django-initd을 가지고 있습니다. the project on GitHub을 참조하십시오.

장고는 실제로 자체를 데몬 처리하는 프로세스를위한 유틸리티를 포함하고 있습니다. django.utils.daemonize에서 내 라이브러리는 시작/종료, 로깅 및 관리 명령과의 상호 작용을 처리합니다. 도움이되는지 알고 싶습니다.

0

왜 서비스를 separte 프로세스로 시작 하시겠습니까?

runserver와 동일한 프로세스에서 스레드로 실행하십시오.

+0

음 ...이 작업을 수행하는 방법에 대한 간단한 wxample을 제공 할 수 있습니까? 스레드를 사용하는 경험이 전혀 없습니다. 나는 적어도 두 가지 서비스 (ftp 서버와 가상 파일 시스템 마운트)를 시작할 계획이므로 스레드를 사용하여 모든 것을 관리 할 수 ​​있다면 좋을 것입니다. – Weholt

+0

기본 예제는 여기에 있습니다. 데프 근로자() 스레딩 수입 : # 여기 이 threading' 모듈'에 설명서를 읽기() threading.Thread (대상 = 근로자) .start를 유용한 일을하고 있어요. –

관련 문제