在django项目中使用celery异步发送邮件

一、在项目虚拟环境中安装celery和redis

在这里插入图片描述
在这里插入图片描述

二、在项目目录下创建celery_tasks包,并在其下新建tasks.py

在这里插入图片描述
在tasks.py中添加如下代码:

from celery import Celery
from django.conf import settings
from django.core.mail import send_mail
# django环境初始化
import os
import django
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'dailyfresh.settings')
django.setup()

# 创建一个celery类的实例对象
app = Celery('celery_tasks.tasks', broker='redis://127.0.0.1:6379/8')

@app.task
def send_email_task(username, email, token):
    subject = '天天生鲜欢迎信息'
    message = ''
    sender = settings.EMAIL_FROM
    receiver = [email]
    html_message = '<h1>欢迎{0}注册天天生鲜会员</h1>激活账户请点击下方链接:<br/><a href="http://127.0.0.1/user/active/{1}">http://127.0.0.1/user/active/{2}</a>'.format(
        username, token, token)
    send_mail(subject, message, sender, receiver, html_message=html_message)
三、在视图函数中添加celery任务
from django.shortcuts import render
from celery_tasks.tasks import send_email_task

def register(request):
	# 部分代码省略
	send_email_task.delay(username, email, token)
	return render(request, 'index.html')
四、启动celery

1、进入项目虚拟环境中,拷贝一份项目代码到ubuntu桌面,进入项目目录下,输入命令:

celery -A celery_tasks.tasks worker -l info

在这里插入图片描述在这里插入图片描述
从上图中可以看到celery任务已经开启了!
接下来去执行一遍视图函数,效果如下图所示,显示已接受到任务,并执行成功:
在这里插入图片描述

五、celery的工作流程图

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值