2013-05-04 1 views
2

첫 번째 애플리케이션이 테이블에 데이터를 삽입하고 두 번째 애플리케이션이 테이블에서 항목 하나를 선택하여 처리하고 마침내 테이블에서 제거하는 django 애플리케이션 (django 용어로 애플리케이션)을 작성합니다. 모든 항목이 처리 될 때까지 계속 그렇게합니다. 모든 항목이 처리되면 중지됩니다. 새 항목이 만들어지면 다시 시작됩니다. 그래서 그것은 소비자 - 생산자 문제와 같습니다.Django Signals : 테이블의 첫 번째 입력을 알리는 방법

어떻게 테이블에 첫 번째 항목을 만들 때 장고 신호를 사용하여 두 번째 응용 프로그램을 시작할 수 있습니까?

+1

애플리케이션? save 메소드를 단순히 오버라이드하지 않는 이유는 무엇입니까? 테이블에 새 항목을 삽입하면 처리합니다 (= 두 번째 "응용 프로그램"코드 실행)! 타이머가 필요해? 원격 서버를 사용하고 있습니까? 먼저 (인간처럼) 확인해야합니까? 솔직히 말해서, 내가하는 일을하는 당신의 방법이 나에게 서버 IO 친화적 인 것처럼 보이지 않기 때문에 이것이 숙제 일 것입니다. – StefanNch

+0

@StefanNch "소비자 생산자"라고 언급 했으므로 숙제가 아니다. :) 음, save 메소드를 재정의 할 수 있지만 저장하는 즉시 처리를 시작합니다. 선착순으로 처리하고 싶습니다. 하나의 항목을 처리하는 것이 CPU를 많이 사용하기 때문입니다. 나는 모든 것을 평행하게 진행할 여유가 없다. – Aryaveer

+0

@StefanNch 내가 잘못하면 나를 바로 잡으십시오. – Aryaveer

답변

3

문제의 해결 방법은 설명에 언급 된대로 django-celery입니다. django-celery는 작업 대기열을 제공하고 요청을 차단하지 않고 작업을 처리합니다. 프로듀서가 테이블을 발견하면 새 항목을 삽입하는 동안 post_save 메서드로 소비자에게 신호를 보내고 처리기는 작업을 시작하고 모두 완료되면 중지합니다.

관련 문제