2012-12-14 2 views
2

달성하기 위해 노력하고있는 것을 설명하기가 어렵습니다. 이 문제를 해결할 수있는 인내심을 가져주십시오. 궁금한 점이 있으면 알려주세요.Django Signal 대 Python Threading

말하자면 느슨하게 결합 된 두 개의 응용 프로그램이있는 장고 프로젝트가 있습니다. 응용 프로그램 중 하나는 '작업'이고 다른 하나는 '알림'입니다.

이제 작업 인스턴스가 업데이트 될 때 알림을 만들고 싶습니다. 그래서 장고 신호를 사용하려고 생각했습니다. 그러나 내가 가지고있는 예약 중 일부는 다음과 같습니다.

  1. post-save와 같은 빌드 인 신호를 사용하는 경우. 작업 인스턴스의 조건을 확인하고 알림을 생성 할 수 있습니다 (좋은). 하지만 동일한 뷰 로직에서 작업 인스턴스에 save 메소드를 여러 번 호출하면 문제가 발생합니다. 이렇게하면 알림이 여러 번 생성됩니다. 다른 방법으로, 집에서 만든 신호를 수동으로 호출해야하는데, 느슨한 결합에는 좋지 않습니다.
  2. 또한 신호가 비동기 적이 지 않으므로 계속 진행하기 전에 알림 생성이 완료 될 때까지 기다려야합니다.

누구든지 신호를 사용하여 좋은 구현 전략을 제안 할 수 있습니까? 파이썬 스레딩 (Python Threading)이 비동기 문제를 해결하는 것으로 보인다. 그러나 스레딩을 사용하면 다른 결과가 발생합니다.

+0

셀러리를 들여다 보았습니까? –

+0

구체적으로는 아니지만 AMQP에 대한 이해가 있습니다. 그러나 비교적 쉬운 해결책을 찾고 있습니다. 이용 가능한 시간의 부족 때문에. –

+0

@ThomasOrozco : 또한, 나는 정말로 피하려고하는 중개인을 유지하기 위해 서버가 필요합니다. –

답변

1

RabbitMQ와 함께 django-celery를 사용하는 것이 좋습니다. 셀러리의 태스크에 통지 사항을 추가하고 태스크 큐를 시작할 수 있습니다. 보세요 ... 나는 그것이 당신에게 도움이되기를 바랍니다.

+0

그래, 중요한 연구를 한 후에 AMQP가 확장 가능한 방법이라는 것을 알았습니다. RabbitMQ는 과잉이지만 제가 Redis로 이동할 수 있습니다 –

+0

그래 .... Redis도 아주 좋습니다. 그러나 Redis에 관한 문서에는주의가 있습니다. 그래서 제대로 테스트하십시오. –