异步任务--celery发送邮件

时间:2023-03-09 03:53:12
异步任务--celery发送邮件

异步任务--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