異步任務--celery發送郵件


 

 

安裝兩個python包:

         pip install celery==3.1.25

         pip install django-celery==3.1.17

在配置文件settings.py中做如下配置:

a)    首先注冊應用djcelery並做如下配置。

         import djcelery
         djcelery.setup_loader()
     BROKER_URL = 'redis://127.0.0.1:6379/2'

b)    生成djcelery所依賴的表。

python manage.py migrate

c)    在應用目錄下新建一個tasks.py文件。

 

# 寫celery任務函數
from celery import task
from django.core.mail  import send_mail
from django.conf import settings
import time


@task
def send_register_success_mail(username, password, email):
    message = '<h1>歡迎您成為注冊會員</h1>請記好您的信息:<br/>用戶名:' + username + '<br/>密碼:' + password
    send_mail('歡迎信息', '', settings.EMAIL_FROM, [email], html_message=message)
    time.sleep(5)

 

d)    任務函數中將發送郵件任務加入任務隊列

 

# /user/register_handle/
def register_handle(request):
    '''實現用戶注冊'''
    # 1.接收用戶的注冊信息
    username = request.POST.get('user_name')
    password = request.POST.get('pwd')
    email = request.POST.get('email')
    # 2.保存進數據庫
    Passport.objects.add_one_passport(username=username, password=password, email=email)
    # 3.給用戶注冊郵箱發郵件
    # message = '<h1>歡迎您成為注冊會員</h1>請記好您的信息:<br/>用戶名:'+username+'<br/>密碼:'+password
    # send_mail('歡迎信息', '', settings.EMAIL_FROM, [email], html_message=message)
    # time.sleep(5)
    # 將任務放入任務隊列
    send_register_success_mail.delay(username=username, password=password, email=email)
    # 3.跳轉到登錄頁面 /user/login/
    return redirect('/user/login/')

 

啟動worker進行

       python manage.py celery worker --loglevel=info


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM