2013-08-02 3 views
1

보기에서 여러 이메일을 보내려고합니다. 내가보기에, 그보기는 응답을 다시 보내고 백그라운드에서 이메일을 보냅니다.Python/Django EmailMultiAlternatives가 여러 개의 이메일을 전송합니다.

내가

return EmailMultiAlternatives(subject, 
          t, 
          sender, 
          recipients, 
          bcc=bcc).send() 

를 실행할 때 이메일 또는 두 개의이든을 보낼 때까지 뷰가 응답을 보내지 않습니다.

은 내가

yield EmailMultiAlternatives(subject, 
          t, 
          sender, 
          recipients, 
          bcc=bcc).send() 

명령 내 이메일을 보낼 수 없습니다 이유를 물어보고 싶은? 수익이 내가 원하는 것처럼 행동하지 않는 이유는 무엇입니까?

답변

1

장고 프레임 워크 (Tornado 또는 Twisted과 달리)는 동기/차단 모드에서 작동하므로보기가 모든 것을 수행 할 때까지 응답을 반환하지 않습니다.

전자 메일이 전송되기를 기다리지 않으려면 celerydjango-celery 패키지를 살펴 봐야합니다. 작업을 정의하고보기의 대기열에 배치하고 응답을 반환하고 작업자가 "백그라운드에서"작업을 수행하게하십시오. 또한

은 다음을 참조하십시오

희망이 도움이.

+0

빠른 응답을 보내 주셔서 감사합니다. 나는 지금 그들을보고있다. – Clayton

+0

예! 셀러리는 훌륭하지만 AJAX 요청을 통해 메일을 더 간단하게 보낼 수 있습니다. 그냥 전자 메일을 보내는 URL을 만들고 실제로 메일을 보내고 html로 표시 할 수있는 간단한 응답을 보냅니다. – adamr

+0

은 Python Scrapy 프레임 워크 에서처럼 콜백 메소드는 모든 요청을 생성 할 수 있습니다. – Clayton

관련 문제