2015-11-13 83 views
0

是他做異步的正確方法調用Python中的功能?什麼是發送郵件異步在Python/Django的正確方法是什麼?

起始密碼

pool = Pool(processes=4) 
       pool.apply_async(send_email, ['CONFIRM', email, auth_token, password, "", first_name]) 

功能

def send_email(flag, email, auth_token='', password='', shared_by='', name=''): 

    try : 
      send_mail('Greetings!', 'Hi '+str(name)+'\nThank you for checking us out!' 
          'Please click on the link below to activate your subscription.\n' + confirmation_link + 
       '\npassword : ' + password, '[email protected]', [email], 
       fail_silently=False) 
    except SMTPException as e: 
      print e 

有我看了網上的文檔?

是的,我有,但它嚴重並沒有多大幫助。所以我在這裏尋求幫助。

+0

您已閱讀在線文檔,但您沒有告訴我們您的工作有什麼問題。 –

+0

我想知道這是否是異步需要做的呢? – cafebabe1991

+0

它在最上面的@ShangWang的問題 – cafebabe1991

回答

1

如果你想要的東西異步集成在Django,你需要一個異步任務隊列/工作。如果你需要發送大量的郵件,它會阻止Django流。

任務隊列管理必須在 常規HTTP請求 - 響應週期之外執行的後臺工作。

任務異步處理或者是因爲它們不是通過HTTP請求啓動 ,或者是因爲它們是長時間運行的作業,會大大降低HTTP響應的性能。

有跡象表明,與Django的集成以及像芹菜docs)幾個任務隊列系統。我建議您閱讀以瞭解並選擇正確的解決方案:Full Stack Python - Task queues

+0

是的,我讀過芹菜和你說的重載我的django也是不可否認的。我還想知道上面的代碼是否可以異步工作?因爲我認爲它仍然阻止我到達瀏覽器的響應,但是當我終止其運行的進程時,我在瀏覽器中得到響應。所以我認爲上面的代碼有問題。你能幫我嗎 ? – cafebabe1991

+0

我無法幫助你,我用python編寫了一些服務器,並且異步處理任務,我使用了Thread。關於你的代碼,我無法幫你解決這段代碼。我認爲Pool對象不容易集成到模塊中,因爲Django是一個框架,它修復了一些規則:[檢查它可以幫助你](http://stackoverflow.com/questions/18947876/using-python-multiprocessing -pool-內式終端和 - 在代碼模塊換django的)。但我可以告訴你,這不是你想要的正確方法。你必須使用任務隊列/作業。 –

相關問題