2010-12-17 2 views
0

내가 필요로하는 것은 웹 요청과 독립적으로 백그라운드에서 실행되는 것으로, 특정 테이블을 계속 확인하고 계산을 수행하는 것입니다. "에이전트"라는 용어는이 작업에 더 적합하다고 생각되지만, 올바른지 확실하지 않습니다.장고 응용 프로그램에서 에이전트를 구현하는 가장 좋은 방법

구현 방법에 대한 의견이나 제안이 있으십니까? 나에게 일어난 첫 번째 일은 cron이 호출하는 스크립트 였지만 확실하지는 않습니다 ...

고마워요.

답변

3

요즘 가장 인기있는 방법은 셀러 같은 도우미 라이브러리를 사용하여 일종의 메시지 대기열을 사용하는 것입니다. 이 작동 방식은 메시지 대기열에서 수신 대기중인 많은 데몬을 실행하게하는 것입니다. 응용 프로그램에서 대기열에 작업자가 선택하는 메시지를 추가합니다. 이것은 꽤 복잡하지만 꽤 빠릅니다.

그러나 내게는 애플리케이션에 완전히 과용 된 것처럼 느낍니다. 물건을 만드는 방법은 훨씬 간단하고 덜 연약합니다. 또한 코드 디버깅 및 테스트가 더 쉬워집니다.

유익한 부작용으로, 유스 케이스가 실제로 "특정 테이블을 확인하고 다른 테이블로 이동하는 일부 계산을 수행"하는 경우 데이터베이스 트리거를 사용하여 작업을 수행 할 수 있습니다.

0

나는 Cron tasks을 사용하는 것에 대해 생각 하겠지만, 유닉스 또는 윈도우 시스템을 사용하는지에 달려있다.

Cron 작업의 주요 이점은 사용되는 언어가 무엇이든 스크립트를 실행한다는 점입니다. 그래서 당신은 등 쉘 스크립트, 파이썬, PHP를 사용할 수 있습니다

1

Celery에서 살펴 본다보십시오 :

셀러리는 분산 메시지 전달을 기반으로 오픈 소스 비동기 작업 큐/작업 큐입니다. 실시간 운영에 초점을 맞추지 만 스케줄링도 지원합니다.

작업이라고하는 실행 단위는 하나 이상의 작업자 노드에서 동시에 실행됩니다. 작업은 비동기 적으로 (백그라운드에서) 또는 동 기적으로 (준비 될 때까지 대기) 실행할 수 있습니다.

0

django-command-extensions 앱을 사용하면 실행하려는 여러 작업이있는 경우 특히 유용한 작업 시스템을 제공합니다. 작업을 실행하려면 여전히 cron을 사용해야합니다. docs

보기
관련 문제