2012-06-27 3 views
1

파이썬의 smptd 및 asyncore 라이브러리를 사용하여 포트 25에서 수신 전자 메일을 수신하는 소켓 응용 프로그램을 만들려고하는데 응용 프로그램에서 Django ORM에 액세스하여 필요한 작업을 수행해야합니다.Django 관리 명령 Daemonize

내가 지금까지했던 방식은 장고 데이터베이스에 직접 액세스하는 파이썬 스크립트를 작성하고 감독자 아래에서 실행하지만 좋은 해결책은 아닙니다. 적절한 것은 관리 명령 또는 태스크 대기열 (Celery)과 같은 것입니다.

장시간 실행되는 소켓 응용 프로그램을 실행하는 Django 관리 명령을 작성하면 관리자에게 첨부 할 수 있습니까? 그것을 대몬 화해야합니까? 차이점은 무엇이며 어떻게 대몬화할 수 있습니까? 나는 django.utils.daemonize를 찾았지만 이에 관한 문서를 찾지 못했습니다.

셀러리로 해결하는 것이 더 적절할까요?. 내 응용 프로그램은 소켓을 듣고 셀러 리는 내 이해에 따라 트리거를 기다리는 중 셀러 리가 시작될 때 자동으로 시작되는 셀러 리에서 장기 실행 태스크의 샘플을 찾지 못했습니다.

답변

3

파이썬 + 슈퍼 바이저를 사용하여 작업하는 것이 최선의 해결책이라고 생각합니다. Celery의 목표는 작업을 실행하고 예정된 작업을 실행하기 때문입니다. 스크립트가 Celery 작업을 생성 할 때 종료 방법이 있습니다. 더 나은 성능을 제공합니다. 하지만 예약 된 백그라운드 작업을 실행해야하거나 데몬에서 오래 실행하는 작업이 필요한 경우에만 셀러리를 사용해야합니다.

+0

정확히 그렇습니다. 슈퍼 바이저는 manage.py와 같은 명령에 가장 적합합니다. – Hanynowsky

0

관리 명령의 또 다른 해결책으로, 전자 메일 서버에서 장고가 제공하는 웹 서비스를 호출하는 것이 좋습니다.

이 혜택

당신이 원하는 경우 다른 서버에 넣어 수 있도록 메일 서버가 장고에서 해제 결합
  • , 몇 가지가 있습니다
  • 당신이 필요로하는 유일한 데몬이 메일 프로그램
  • 입니다
  • 셀러리가 필요 없음 - 장고 구성 요소가 수동이기 때문에 장고는 트리거링에 신경 쓸 필요가 없습니다.