2016-02-16 23 views
1

當Django發送郵件時,根據smtp服務器的不同,它需要幾毫秒到幾秒鐘的時間。所以我面臨的問題是,當Django開始發送電子郵件凍結在那裏。用戶必須等到郵件發送完畢。我想知道我是否可以簡單地返回html頁面,並且在後臺可以發送電子郵件而無需讓用戶等待它。不凍結髮送郵件django

骨架是在頁面正在呈現之前,電子郵件正在發送。所以,我想先渲染頁面,然後在後臺發送電子郵件。

回答

3

我已經做在我的項目是這樣的,使用線程:

class EmailThread(Thread): 
    def __init__(self, myemail): 
     self.myemail = myemail 
     Thread.__init__(self) 

    def run(self): 
     self.myemail.send() 

class MyEmailMessage(EmailMessage): 
    def send_async(self, fail_silently=False): 
     thread = EmailThread(self) 
     thread.start() 

# send email 
email = MyEmailMessage(...) 
email.send_async() 
+0

我認爲這會工作..讓你知道:)謝謝。 –

0

還有一個名爲django-mailer一個很好的項目。 它將郵件保存在數據庫中,並通過crontab或芹菜異步發送。