安裝兩個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