2010-02-28 5 views
1

내 모델에 신호를 추가했습니다.이 모델은 모델 저장 후 일부 이메일 주소로 이메일을 보냅니다 (models.signals.post_save.connect 신호 및 이메일 전송의 경우 send_mail). 이 아이디어는 여전히 사용자를 위해 지연을 일으키며, 사이트에서 모델을 저장할 때 모든 전자 메일이 전송 될 때까지 기다려야하고 서버에서 응답을받을 때까지 기다려야합니다.Django 모델, 신호 및 이메일 전송 지연

신호를 시도하기 전에 모델의 저장 방법을 래핑하려고 시도했으며 super(Foo, self).save(*args, **kwargs) 이후 이메일을 보냈습니다. 이 지연 경험은 그 방법으로도 발생했습니다.

사이트에서 사용자에게 지연을 표시하지 않고 백그라운드에서 수행 할 이메일 전송 작업 만 원할뿐입니다.

어떻게 해결할 수 있습니까?

답변

1

가장 쉬운 것은 전자 메일 메시지를 큐에 한 다음 데몬으로 보낸 것입니다 :

이 질문은 그 처리하는 방법에 관한 것입니다. django-mailer을 확인하십시오.

send_mail에만 관심이있는 것 같으므로 두 단계로 시작할 수 있습니다.

# favour django-mailer but fall back to django.core.mail 
from django.conf import settings 

if "mailer" in settings.INSTALLED_APPS: 
    from mailer import send_mail 
else: 
    from django.core.mail import send_mail 

을 다음 메일을 보내 manage.py send_mail를 호출하는 cronjob를 만들기 : 첫째, send_mail의 장고 메일 발송의 버전을 가져 오려면이를 사용합니다. 예를 들어 cronjob 항목 인 django-mailer usage docs을 확인하십시오.

전송할 이메일이 보이지 않으면 콘솔에서 manage.py send_mail을 실행 해보십시오. 이것은 사람들이 가지고있는 가장 큰 문제인 것 같습니다.