使用celery异步发送邮件

原理:耗时操作交给另一个进程执行

pip install celery==3.1.25 celery-with-redis==3.0 django-celery==3.2.1

在你的应用下面创建名为task.py,用于封装耗时任务

配置setting文件

 

    #配置邮箱

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_USE_TLS = False
EMAIL_HOST = 'smtp.163.com'
EMAIL_PORT = 25
EMAIL_HOST_USER = 'xxxxx@163.com'
EMAIL_HOST_PASSWORD = 'xxxxx'
EMAIL_FROM = 'xxxxx@163.com'



import djcelery

djcelery.setup_loader()
# 配置redis            :密码@ip:端口/指定数据库
BROKER_URL = 'redis://:pzl123456@47.106.37.80:6379/0'
CELERT_IMPORTS = ('users.task')
 

 

迁移生成celery需要的表

python manage.py migrate

将名为celery.py文件加入到同工程目录同名的目录下,代码如下

 

from __future__ import absolute_import

import os
from celery import Celery
from django.conf import settings


app = Celery('portal')

app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)


@app.task(bind=True)
def debug_task(self):
    print('Request: {0!r}'.format(self.request))

修改与工程目录同目录下的__init__.py文件

 

from newblog.celery import app as celery_app
把发送邮件的函数写到task.py文件中

用装饰器装饰这个函数

已启动redis 

然后启动worker   

python manage.py celery worker --loglevel=info

    linux要用  nohup执行这个worker工人

在视图函数中调用

最后注册发送邮件调用

工人控制台显示

测试完成

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值