Django使用celery异步发送邮件

celery 4.2版本 Redis2.10版本

  • 安装 pip install celery,Redis作为中间人,安装2版本,3会报错,在Windows下测试还需安装 pip install eventlet
  • settings中配置Redis为中间人,作为任务的接受者
    CELERY_BROKER_URL = 'redis://localhost:6379/2'
    #: Only add pickle to this list if your broker is secured
    #: from unwanted access (see userguide/security.html)
    CELERY_ACCEPT_CONTENT = ['json']
    CELERY_RESULT_BACKEND = 'redis://localhost:6379/3'
    CELERY_TASK_SERIALIZER = 'json'
    
    

1.在项目目录下创建celery.py文件,内容如下

from __future__ import absolute_import, unicode_literals
import os
from celery import Celery

# set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'dailyfresh.settings')
app = Celery('dailyfresh')
app.config_from_object('django.conf:settings', namespace='CELERY')

# Load task modules from all registered Django app configs.
app.autodiscover_tasks()
# @app.task(bind=True)
# def debug_task(self):
#     print('Request: {0!r}'.format(self.request))

2.配置settings同级目录下__init__.py文件

from __future__ import absolute_import, unicode_literals
from .celery import app as celery_app
__all__ = ('celery_app',)

3.在应用目录下创建tasks.py文件,必须是次文件名,celery会找项目中所有tasks.py文件

from __future__ import absolute_import, unicode_literals
from celery import shared_task
from dailyfresh import settings
from django.core.mail import send_mail

@shared_task
def send_register_email(username, token, email):
    message = ''
    title = '天天生鲜欢迎信息'
    body = '<h1>{name},欢迎成为天天生鲜会员</h1>请点击下面链接激活账号<a href="http://127.0.0.1:8000/user/register/active/{token}">http://127.0.0.1:8000/user/register/active/{token}</a>'.format(
        name=username, token=token)
    try:
        send_mail(title, message, settings.EMAIL_FROM, [email], html_message=body)
    except Exception as e:
        print(e)

4.发出celery请求

send_register_email.delay(username, token, email)

5.处理请求

celery -A dailyfresh worker -l info -P eventlet
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值